@Override public boolean isServiceAvailable() { try { Discoverable discoverable = new RandomEndpointStrategy(() -> discoveryServiceClient.discover(serviceName)) .pick(discoveryTimeout, TimeUnit.SECONDS); if (discoverable == null) { return false; } return txClient.status().equals(Constants.Monitor.STATUS_OK); } catch (IllegalArgumentException e) { return false; } catch (Exception e) { LOG.warn("Unable to ping {} : Reason {} ", serviceName, e.getMessage()); return false; } }
@Override protected Discoverable pick(ServiceDiscovered serviceDiscovered) { return pickRandom(serviceDiscovered); }
public StickyEndpointStrategy(ServiceDiscovered serviceDiscovered) { super(serviceDiscovered); this.picker = new RandomEndpointStrategy(serviceDiscovered); }
public StickyEndpointStrategy(Supplier<ServiceDiscovered> serviceDiscoveredSupplier) { super(serviceDiscoveredSupplier); this.picker = new RandomEndpointStrategy(serviceDiscoveredSupplier); }
@Override public boolean isServiceAvailable() { try { ServiceDiscovered discovered = discoveryServiceClient.discover(serviceName); Discoverable discoverable = new RandomEndpointStrategy(discovered).pick(discoveryTimeout, TimeUnit.SECONDS); if (discoverable == null) { return false; } return txClient.status().equals(Constants.Monitor.STATUS_OK); } catch (IllegalArgumentException e) { return false; } catch (Exception e) { LOG.warn("Unable to ping {} : Reason {} ", serviceName, e.getMessage()); return false; } }
@Override public EndpointStrategy get() { return new RandomEndpointStrategy(() -> discoveryClient.discover(Service.EXPLORE_HTTP_USER_SERVICE)); } });
protected Discoverable pick(ServiceDiscovered serviceDiscovered) { if (version != null) { return RandomEndpointStrategy.pickRandom(new VersionFilteredServiceDiscovered(serviceDiscovered, version)); return RandomEndpointStrategy.pickRandom(new VersionFilteredServiceDiscovered(serviceDiscovered, version));
@Override public URL getServiceURL(String applicationId, String serviceId) { String discoveryName = String.format("service.%s.%s.%s", namespaceId, applicationId, serviceId); return createURL(new RandomEndpointStrategy(() -> getDiscoveryServiceClient().discover(discoveryName)) .pick(1, TimeUnit.SECONDS), applicationId, serviceId); }
@Override public EndpointStrategy get() { return new RandomEndpointStrategy(discoveryClient.discover(Service.EXPLORE_HTTP_USER_SERVICE)); } });
@Override public URL getServiceURL(String applicationId, String serviceId) { String discoveryName = String.format("service.%s.%s.%s", namespaceId, applicationId, serviceId); ServiceDiscovered discovered = getDiscoveryServiceClient().discover(discoveryName); return createURL(new RandomEndpointStrategy(discovered).pick(1, TimeUnit.SECONDS), applicationId, serviceId); }
@Override public EndpointStrategy get() { return new RandomEndpointStrategy(() -> discoveryClient.discover(discoverableServiceName)); } });
@Override public URL getServiceURL(long timeout, TimeUnit timeoutUnit) { return ServiceDiscoverable.createServiceBaseURL( new RandomEndpointStrategy(() -> discoveryServiceClient.discover(ServiceDiscoverable.getName(programId))) .pick(timeout, timeoutUnit), programId); }
@Override public EndpointStrategy get() { return new RandomEndpointStrategy(discoveryClient.discover(discoverableServiceName)); } });
@Override public URL getServiceURL(long timeout, TimeUnit timeoutUnit) { ServiceDiscovered discovered = discoveryServiceClient.discover(ServiceDiscoverable.getName(programId)); return ServiceDiscoverable.createServiceBaseURL(new RandomEndpointStrategy(discovered).pick(timeout, timeoutUnit), programId); }
@Override public EndpointStrategy get() { return new RandomEndpointStrategy(() -> discoveryServiceClient.discover(Constants.Service.APP_FABRIC_HTTP)); } });
@Override public URL getServiceURL(long timeout, TimeUnit timeoutUnit) { return ServiceDiscoverable.createServiceBaseURL( new RandomEndpointStrategy(() -> discoveryServiceClient.discover(ServiceDiscoverable.getName(programId))) .pick(timeout, timeoutUnit), programId); } }
private static void waitForService(DiscoveryServiceClient discoveryService, String discoverableName) throws InterruptedException { EndpointStrategy endpointStrategy = new RandomEndpointStrategy(() -> discoveryService.discover(discoverableName)); Preconditions.checkNotNull(endpointStrategy.pick(5, TimeUnit.SECONDS), "%s service is not up after 5 seconds", discoverableName); }
@Override public URL getServiceURL(long timeout, TimeUnit timeoutUnit) { ServiceDiscovered discovered = discoveryServiceClient.discover(ServiceDiscoverable.getName(programId)); return ServiceDiscoverable.createServiceBaseURL(new RandomEndpointStrategy(discovered).pick(timeout, timeoutUnit), programId); } }
private static void waitForService(String service) { EndpointStrategy endpointStrategy = new RandomEndpointStrategy(() -> discoveryServiceClient.discover(service)); Preconditions.checkNotNull(endpointStrategy.pick(5, TimeUnit.SECONDS), "%s service is not up after 5 seconds", service); }
@Test public void testMasterDiscovery() { Injector injector = Guice.createInjector( new ConfigModule(cConf), new ZKClientModule(), new ZKDiscoveryModule() ); ZKClientService zkClient = injector.getInstance(ZKClientService.class); zkClient.startAndWait(); try { DiscoveryService discoveryService = injector.getInstance(DiscoveryService.class); DiscoveryServiceClient discoveryServiceClient = injector.getInstance(DiscoveryServiceClient.class); // Register a master service InetSocketAddress socketAddr = new InetSocketAddress(InetAddress.getLoopbackAddress(), 43210); Cancellable cancellable = discoveryService.register(new Discoverable(Constants.Service.APP_FABRIC_HTTP, socketAddr)); try { // Discover the master service Discoverable discoverable = new RandomEndpointStrategy( () -> discoveryServiceClient.discover(Constants.Service.APP_FABRIC_HTTP)).pick(10, TimeUnit.SECONDS); Assert.assertNotNull(discoverable); Assert.assertEquals(Constants.Service.APP_FABRIC_HTTP, discoverable.getName()); Assert.assertEquals(socketAddr, discoverable.getSocketAddress()); } finally { cancellable.cancel(); } } finally { zkClient.stopAndWait(); } }