class AttributeQueryRequestClient {

    public Element sendQuery(Element matchingServiceRequest, String messageId, SessionId sessionId, URI matchingServiceUri) {
        LOG.info("Sending attribute query to {}", matchingServiceUri);
        totalQueries.labels(matchingServiceUri.toString()).inc();
        Optional<Element> response = sendSingleQuery(
                matchingServiceRequest,
                messageId,
                sessionId,
                matchingServiceUri
        );
        if (response.isPresent()) {
            successfulQueries.labels(matchingServiceUri.toString()).inc();
            return response.get();
        }
        throw new MatchingServiceException(format("Attribute query failed"));
    }

    @Inject public  AttributeQueryRequestClient(
            SoapRequestClient soapRequestClient,
            ExternalCommunicationEventLogger externalCommunicationEventLogger, MetricRegistry metricsRegistry);

}