use of com.orbitz.consul.model.health.ServiceHealth in project wildfly-swarm by wildfly-swarm.
the class ServiceCacheListener method notify.
@Override
public void notify(Map<HostAndPort, ServiceHealth> newValues) {
Set<Registration> previousEntries = topologyManager.registrationsForService(this.name);
Set<Registration> newEntries = newValues.values().stream().map(e -> new Registration("consul", this.name, e.getService().getAddress(), e.getService().getPort()).addTags(e.getService().getTags())).collect(Collectors.toSet());
previousEntries.stream().filter(e -> !newEntries.contains(e)).forEach(e -> {
this.topologyManager.unregister(e);
});
newEntries.stream().filter(e -> !previousEntries.contains(e)).forEach(e -> {
this.topologyManager.register(e);
});
}
use of com.orbitz.consul.model.health.ServiceHealth in project jim-framework by jiangmin168168.
the class ConsulDiscoveryService method getUrls.
@Override
public List<RpcURL> getUrls(String registryHost, int registryPort) {
List<RpcURL> urls = Lists.newArrayList();
Consul consul = this.buildConsul(registryHost, registryPort);
HealthClient client = consul.healthClient();
String name = CONSUL_NAME;
ConsulResponse object = client.getAllServiceInstances(name);
List<ImmutableServiceHealth> serviceHealths = (List<ImmutableServiceHealth>) object.getResponse();
for (ImmutableServiceHealth serviceHealth : serviceHealths) {
RpcURL url = new RpcURL();
url.setHost(serviceHealth.getService().getAddress());
url.setPort(serviceHealth.getService().getPort());
urls.add(url);
}
try {
ServiceHealthCache serviceHealthCache = ServiceHealthCache.newCache(client, name);
serviceHealthCache.addListener(new ConsulCache.Listener<ServiceHealthKey, ServiceHealth>() {
@Override
public void notify(Map<ServiceHealthKey, ServiceHealth> map) {
logger.info("serviceHealthCache.addListener notify");
RpcClientInvokerCache.clear();
}
});
serviceHealthCache.start();
} catch (Exception e) {
logger.info("serviceHealthCache.start error:", e);
}
return urls;
}
Aggregations