Search in sources :

Example 1 with ConsulService

use of com.networknt.consul.ConsulService in project light-4j by networknt.

the class ConsulClientImpl method convertToConsulService.

private ConsulService convertToConsulService(Map<String, Object> serviceMap) {
    ConsulService service = new ConsulService();
    service.setAddress((String) serviceMap.get("Address"));
    service.setId((String) serviceMap.get("ID"));
    service.setName((String) serviceMap.get("Service"));
    service.setPort((Integer) serviceMap.get("Port"));
    service.setTags((List) serviceMap.get("Tags"));
    return service;
}
Also used : ConsulService(com.networknt.consul.ConsulService)

Example 2 with ConsulService

use of com.networknt.consul.ConsulService in project light-4j by networknt.

the class ConsulClientImpl method lookupHealthService.

@Override
public ConsulResponse<List<ConsulService>> lookupHealthService(String serviceName, String tag, long lastConsulIndex, String token) {
    ConsulResponse<List<ConsulService>> newResponse = null;
    String path = "/v1/health/service/" + serviceName + "?passing&wait=600s&index=" + lastConsulIndex;
    if (tag != null) {
        path = path + "&tag=" + tag;
    }
    if (logger.isDebugEnabled())
        logger.debug("path = " + path);
    ClientConnection connection = null;
    try {
        connection = client.connect(new URI(url), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, OptionMap.EMPTY).get();
    } catch (Exception e) {
        logger.error("Exeption:", e);
    }
    final CountDownLatch latch = new CountDownLatch(1);
    final AtomicReference<ClientResponse> reference = new AtomicReference<>();
    try {
        ClientRequest request = new ClientRequest().setMethod(Methods.GET).setPath(path);
        if (token != null)
            request.getRequestHeaders().put(Constants.CONSUL_TOKEN, token);
        request.getRequestHeaders().put(Headers.HOST, "localhost");
        connection.sendRequest(request, client.createClientCallback(reference, latch));
        latch.await();
        int statusCode = reference.get().getResponseCode();
        if (statusCode >= 300) {
            System.out.println("body = " + reference.get().getAttachment(Http2Client.RESPONSE_BODY));
            throw new Exception("Failed to unregister on Consul: " + statusCode);
        } else {
            String body = reference.get().getAttachment(Http2Client.RESPONSE_BODY);
            System.out.println("body = " + body);
            List<Map<String, Object>> services = Config.getInstance().getMapper().readValue(body, new TypeReference<List<Map<String, Object>>>() {
            });
            List<ConsulService> ConsulServcies = new ArrayList<>(services.size());
            for (Map<String, Object> service : services) {
                ConsulService newService = convertToConsulService((Map<String, Object>) service.get("Service"));
                ConsulServcies.add(newService);
            }
            if (!ConsulServcies.isEmpty()) {
                newResponse = new ConsulResponse<>();
                newResponse.setValue(ConsulServcies);
                newResponse.setConsulIndex(Long.parseLong(reference.get().getResponseHeaders().getFirst("X-Consul-Index")));
                newResponse.setConsulLastContact(Long.parseLong(reference.get().getResponseHeaders().getFirst("X-Consul-Lastcontact")));
                newResponse.setConsulKnownLeader(Boolean.parseBoolean(reference.get().getResponseHeaders().getFirst("X-Consul-Knownleader")));
            }
        }
    } catch (Exception e) {
        logger.error("Exception:", e);
    } finally {
        IoUtils.safeClose(connection);
    }
    return newResponse;
}
Also used : ClientResponse(io.undertow.client.ClientResponse) ArrayList(java.util.ArrayList) AtomicReference(java.util.concurrent.atomic.AtomicReference) HttpString(io.undertow.util.HttpString) CountDownLatch(java.util.concurrent.CountDownLatch) URI(java.net.URI) ArrayList(java.util.ArrayList) List(java.util.List) ClientConnection(io.undertow.client.ClientConnection) ConsulService(com.networknt.consul.ConsulService) OptionMap(org.xnio.OptionMap) Map(java.util.Map) ClientRequest(io.undertow.client.ClientRequest)

Aggregations

ConsulService (com.networknt.consul.ConsulService)2 ClientConnection (io.undertow.client.ClientConnection)1 ClientRequest (io.undertow.client.ClientRequest)1 ClientResponse (io.undertow.client.ClientResponse)1 HttpString (io.undertow.util.HttpString)1 URI (java.net.URI)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Map (java.util.Map)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 OptionMap (org.xnio.OptionMap)1