private static UserDataServiceClient createUserDataServiceClientProxy( final ServiceBundle serviceBundle, final int numWorkers) { final ServiceWorkers userDataServiceWorkers = workers(); for (int index = 0; index < numWorkers; index++) { ServiceQueue userDataService = serviceBuilder().setServiceObject(new UserDataService()).build(); userDataService.startCallBackHandler(); userDataServiceWorkers.addService(userDataService); } userDataServiceWorkers.start(); serviceBundle.addServiceConsumer("workers", userDataServiceWorkers); return serviceBundle.createLocalProxy(UserDataServiceClient.class, "workers"); }
private static RecommendationServiceClient createRecommendationServiceClientProxy( final ServiceBundle serviceBundle, final UserDataServiceClient userDataServiceClient, int numWorkers) { final ServiceWorkers recommendationShardedWorkers = shardOnFirstArgumentWorkers(); for (int index = 0; index < numWorkers; index++) { RecommendationService recommendationServiceImpl = new RecommendationService(userDataServiceClient); ServiceQueue serviceQueue = serviceBuilder().setServiceObject(recommendationServiceImpl).build(); serviceQueue.startCallBackHandler(); recommendationShardedWorkers.addService(serviceQueue); } recommendationShardedWorkers.start(); serviceBundle.addServiceConsumer("recomendation", recommendationShardedWorkers); return serviceBundle.createLocalProxy(RecommendationServiceClient.class, "recomendation"); }
@Override public void onApplicationEvent(ContextRefreshedEvent event) { serviceQueueRegistry .getItems() .forEach( item -> { final ServiceQueue serviceQueue = applicationContext.getBean(item.getKey(), ServiceQueue.class); if (clusteredEventManager != null && (boolean) item.getValue().get("remoteEventListener")) { clusteredEventManager.joinService(serviceQueue); } if (serviceEndpointServer != null && (boolean) item.getValue().get("exposeRemoteEndpoint")) { final String endpointLocation = (String) item.getValue().get("endpointLocation"); logger.info( AnsiOutput.toString( "Registering endpoint: ", BOLD, GREEN, endpointLocation, NORMAL)); serviceEndpointServer.addServiceQueue(endpointLocation, serviceQueue); logger.info("Starting service queue as part of endpoint {}", serviceQueue.name()); serviceQueue.startServiceQueue(); } else { logger.info("Starting service queue standalone {}", serviceQueue.name()); serviceQueue.start(); serviceQueue.startCallBackHandler(); } }); if (serviceEndpointServer != null) { serviceEndpointServer.start(); } applicationContext.publishEvent(new QBitStartedEvent(applicationContext)); }