@Override public ComponentInfo getComponentById(ComponentCategory category, String id) { try { ServiceInstance<ComponentInfo> instance = serviceDiscovery.queryForInstance(category.toString(), id); if (instance != null) return instance.getPayload(); } catch (Exception e) { e.printStackTrace(); } return null; }
assertNull(sDiscovery.queryForInstance("servers", ZK_ID)); DummyUser du = new DummyUser(); DummyUser du2 = new DummyUser(); assertNotNull(client.checkExists().forPath("/services")); assertEquals(1, sDiscovery.queryForInstances("servers").size()); assertNotNull(sDiscovery.queryForInstance("servers", ZK_ID)); du2.register(); assertNotNull(client.checkExists().forPath("/services")); assertEquals(1, sDiscovery.queryForInstances("servers").size()); assertNotNull(sDiscovery.queryForInstance("servers", ZK_ID)); assertNotNull(sDiscovery.queryForInstance("servers", ZK_ID)); du2.unregister(); assertNotNull(client.checkExists().forPath("/services")); assertEquals(0, sDiscovery.queryForInstances("servers").size()); assertNull(sDiscovery.queryForInstance("servers", ZK_ID));
private Response internalGet(String name, String id, boolean addDeprecationHeader) { try { ServiceInstance<T> instance = context.getServiceDiscovery().queryForInstance(name, id); if ( instance == null ) { return Response.status(Response.Status.NOT_FOUND).build(); } Response.ResponseBuilder builder = Response.ok(instance); if ( addDeprecationHeader ) { builder = builder.header("Warning", "This API has been deprecated. Please see the updated spec for the replacement API."); } return builder.build(); } catch ( Exception e ) { ThreadUtils.checkInterrupted(e); log.error(String.format("Trying to get instance (%s) from service (%s)", id, name), e); return Response.serverError().build(); } } }
@DELETE @Path("v1/service/{name}/{id}") public Response removeService(@PathParam("name") String name, @PathParam("id") String id) { try { ServiceInstance<T> instance = context.getServiceDiscovery().queryForInstance(name, id); if ( instance != null ) { //noinspection unchecked context.getServiceDiscovery().unregisterService(instance); } } catch ( Exception e ) { ThreadUtils.checkInterrupted(e); log.error("Trying to delete service", e); return Response.serverError().build(); } return Response.ok().build(); }
public static void unregisterService(String serviceName, String clientId) { try { if (registry != null) { synchronized (lock) { ServiceInstance<NodeStatus> instance = registry.serviceDiscovery.queryForInstance(serviceName, clientId); if (instance != null) { registry.serviceDiscovery.unregisterService(instance); } else { LOG.warn("你要注销的服务不存在或已经被注销了,服务id:" + clientId); } } } else { LOG.error("服务注册机已经停止,说明本机所有服务已经全部注销,所以没必要再单独注销服务了。", new Throwable()); } } catch (Throwable e) { LOG.error(e); } }
/** * Verify services are registered. * * @throws Exception */ public void verifyRegistrations() throws Exception { ServiceDiscovery<MetaData> serviceDiscovery = ServiceUtil.getServiceDiscovery(curatorFramework, basePath); listInstances(serviceDiscovery); for (Map.Entry<ServiceDiscovery<MetaData>, ServiceInstance<MetaData>> entry : discoveryMap.entrySet()) { ServiceInstance<MetaData> instance = entry.getValue(); try { ServiceInstance<MetaData> found = entry.getKey().queryForInstance(instance.getName(), instance.getId()); if (found == null) { throw new RuntimeException("There is no instance for: " + instance.getName() + ":" + instance.getId() + " registered "); } log.debug(found.getName() + " is verified at: " + found.getAddress() + ":" + found.getPort()); } catch (Exception e) { log.error("Could not find service: " + (instance.getName() + ":" + instance.getId()), e); throw new RuntimeException(e); } } }
@Override public void setForcedState(String serviceName, String instanceId, ForcedState forcedState) { try { ServiceInstance<Payload> foundInstance = discovery.queryForInstance(serviceName, instanceId); if ( foundInstance != null ) { DiscoveryInstance soaInstance = toSoaInstance(foundInstance); Payload oldPayload = foundInstance.getPayload(); Payload newPayload = new Payload(null, oldPayload.getAdminPort(), oldPayload.getMetaData(), forcedState, oldPayload.getHealthyState()); ServiceInstance<Payload> updatedInstance = buildInstance(serviceName, HostAndPort.fromParts(soaInstance.getHost(), soaInstance.getPort()), newPayload, instanceId, soaInstance.getHost()); discovery.updateService(updatedInstance); } // TODO else? } catch ( Exception e ) { log.error("Could not update service: " + (serviceName + ":" + instanceId), e); throw new RuntimeException(e); } }
public void testMetaData() throws Exception { ServiceDiscovery<Map> sDiscovery = getServiceDiscovery(); assertNull(sDiscovery.queryForInstance("servers", ZK_ID)); DummyUser du = new DummyUser(); try { du.register(); assertNotNull(sDiscovery.queryForInstance("servers", ZK_ID)); List<ServiceInstance<Map>> allMetaData = du.getZKUtils().getAllMetaData(); assertEquals(1, allMetaData.size()); ServiceInstance<Map> meta = allMetaData.get(0); assertEquals(ZK_ID, meta.getId()); assertEquals("servers", meta.getName()); Map<String, String> data = meta.getPayload(); assertEquals(2, data.size()); assertEquals(ZK_ID, data.get("OOZIE_ID")); String url = ConfigUtils.getOozieURL(false); assertEquals(url, data.get("OOZIE_URL")); } finally { du.unregister(); } }
private void advertiseService() throws Exception { // Advertise on the service discovery new EnsurePath(ZK_BASE_SERVICES_PATH).ensure(client.getZookeeperClient()); InstanceSerializer<Map> instanceSerializer = new FixedJsonInstanceSerializer<Map>(Map.class); sDiscovery = ServiceDiscoveryBuilder.builder(Map.class) .basePath(ZK_BASE_SERVICES_PATH) .client(client) .serializer(instanceSerializer) .build(); sDiscovery.start(); sDiscovery.registerService(getMetadataInstance()); // Create the service discovery cache sCache = sDiscovery.serviceCacheBuilder().name(ZK_OOZIE_SERVICE).build(); sCache.start(); zkRegTime = sDiscovery.queryForInstance(ZK_OOZIE_SERVICE, zkId).getRegistrationTimeUTC(); }
private void advertiseService() throws Exception { // Advertise on the service discovery new EnsurePath(ZK_BASE_SERVICES_PATH).ensure(client.getZookeeperClient()); InstanceSerializer<Map> instanceSerializer = new FixedJsonInstanceSerializer<Map>(Map.class); sDiscovery = ServiceDiscoveryBuilder.builder(Map.class) .basePath(ZK_BASE_SERVICES_PATH) .client(client) .serializer(instanceSerializer) .build(); sDiscovery.start(); sDiscovery.registerService(getMetadataInstance()); // Create the service discovery cache sCache = sDiscovery.serviceCacheBuilder().name(ZK_OOZIE_SERVICE).build(); sCache.start(); zkRegTime = sDiscovery.queryForInstance(ZK_OOZIE_SERVICE, zkId).getRegistrationTimeUTC(); }