public static String getRouteId(RpcModule<?,?> module) { return "RPC.Server." + module.getId(); }
public static String getRouteId(RpcModule<?,?> module) { return "RPC.Server." + module.getId(); }
@SuppressWarnings({ "rawtypes", "unchecked" }) public void bind(RpcModule module) throws Exception { if (module != null) { final RpcModule<RpcRequest, RpcResponse> rpcModule = (RpcModule<RpcRequest, RpcResponse>) module; if (registerdModules.containsKey(rpcModule.getId())) { LOG.warn(" {} module is already registered", rpcModule.getId()); } else { registerdModules.put(rpcModule.getId(), rpcModule); startConsumerForModule(rpcModule); } } }
@SuppressWarnings({ "rawtypes", "unchecked" }) public void bind(RpcModule module) throws Exception { if (module != null) { final RpcModule<RpcRequest, RpcResponse> rpcModule = (RpcModule<RpcRequest, RpcResponse>) module; if (registerdModules.containsKey(rpcModule.getId())) { LOG.warn(" {} module is already registered", rpcModule.getId()); } else { registerdModules.put(rpcModule.getId(), rpcModule); startConsumerForModule(rpcModule); } } }
@SuppressWarnings({ "rawtypes", "unchecked" }) public void unbind(RpcModule module) throws Exception { if (module != null) { final RpcModule<RpcRequest, RpcResponse> rpcModule = (RpcModule<RpcRequest, RpcResponse>) module; registerdModules.remove(rpcModule.getId()); stopConsumerForModule(rpcModule); } }
private void stopConsumerForModule(RpcModule<RpcRequest, RpcResponse> rpcModule) { KafkaConsumerRunner kafkaConsumerRunner = rpcModuleConsumers.remove(rpcModule); LOG.info("stopped kafka consumer for module : {}", rpcModule.getId()); kafkaConsumerRunner.shutdown(); }
@SuppressWarnings({ "rawtypes", "unchecked" }) public void unbind(RpcModule module) throws Exception { if (module != null) { final RpcModule<RpcRequest, RpcResponse> rpcModule = (RpcModule<RpcRequest, RpcResponse>) module; registerdModules.remove(rpcModule.getId()); stopConsumerForModule(rpcModule); } }
private void stopConsumerForModule(RpcModule<RpcRequest, RpcResponse> rpcModule) { KafkaConsumerRunner kafkaConsumerRunner = rpcModuleConsumers.remove(rpcModule); LOG.info("stopped kafka consumer for module : {}", rpcModule.getId()); kafkaConsumerRunner.shutdown(); }
@SuppressWarnings({ "rawtypes", "unchecked" }) public void unbind(RpcModule module) throws Exception { if (module != null) { final RpcModule<RpcRequest,RpcResponse> rpcModule = (RpcModule<RpcRequest,RpcResponse>)module; final String routeId = routeIdsByModule.remove(rpcModule); if (routeId != null) { context.stopRoute(routeId); context.removeRoute(routeId); LOG.info("Deregistered RpcModule {} ({})", rpcModule.getId(), Integer.toHexString(rpcModule.hashCode())); } else { LOG.warn("Could not determine route ID for RpcModule {} ({})", rpcModule.getId(), Integer.toHexString(rpcModule.hashCode())); } } }
@SuppressWarnings({ "rawtypes", "unchecked" }) public void unbind(RpcModule module) throws Exception { if (module != null) { final RpcModule<RpcRequest,RpcResponse> rpcModule = (RpcModule<RpcRequest,RpcResponse>)module; final String routeId = routeIdsByModule.remove(rpcModule); if (routeId != null) { context.stopRoute(routeId); context.removeRoute(routeId); LOG.info("Deregistered RpcModule {} ({})", rpcModule.getId(), Integer.toHexString(rpcModule.hashCode())); } else { LOG.warn("Could not determine route ID for RpcModule {} ({})", rpcModule.getId(), Integer.toHexString(rpcModule.hashCode())); } } }
private void startConsumerForModule(RpcModule<RpcRequest, RpcResponse> rpcModule) { final JmsQueueNameFactory topicNameFactory = new JmsQueueNameFactory(KafkaRpcConstants.RPC_REQUEST_TOPIC_NAME, rpcModule.getId(), minionIdentity.getLocation()); KafkaConsumer<String, byte[]> consumer = Utils.runWithGivenClassLoader(() -> new KafkaConsumer<>(kafkaConfig), KafkaConsumer.class.getClassLoader()); KafkaConsumerRunner kafkaConsumerRunner = new KafkaConsumerRunner(rpcModule, consumer, topicNameFactory.getName()); executor.execute(kafkaConsumerRunner); LOG.info("started kafka consumer for module : {}", rpcModule.getId()); rpcModuleConsumers.put(rpcModule, kafkaConsumerRunner); }
private void startConsumerForModule(RpcModule<RpcRequest, RpcResponse> rpcModule) { final JmsQueueNameFactory topicNameFactory = new JmsQueueNameFactory(KafkaRpcConstants.RPC_REQUEST_TOPIC_NAME, rpcModule.getId(), minionIdentity.getLocation()); KafkaConsumer<String, byte[]> consumer = Utils.runWithGivenClassLoader(() -> new KafkaConsumer<>(kafkaConfig), KafkaConsumer.class.getClassLoader()); KafkaConsumerRunner kafkaConsumerRunner = new KafkaConsumerRunner(rpcModule, consumer, topicNameFactory.getName()); executor.execute(kafkaConsumerRunner); LOG.info("started kafka consumer for module : {}", rpcModule.getId()); rpcModuleConsumers.put(rpcModule, kafkaConsumerRunner); }
private DynamicRpcRouteBuilder(CamelContext context, MinionIdentity identity, RpcModule<RpcRequest,RpcResponse> module) { super(context); this.identity = identity; this.module = module; this.queueNameFactory = new JmsQueueNameFactory(CamelRpcConstants.JMS_QUEUE_PREFIX, module.getId(), identity.getLocation()); }
private DynamicRpcRouteBuilder(CamelContext context, MinionIdentity identity, RpcModule<RpcRequest,RpcResponse> module) { super(context); this.identity = identity; this.module = module; this.queueNameFactory = new JmsQueueNameFactory(CamelRpcConstants.JMS_QUEUE_PREFIX, module.getId(), identity.getLocation()); }
@Override public void process(Exchange exchange) throws Exception { @SuppressWarnings("unchecked") final CamelRpcRequest<RpcRequest,RpcResponse> wrapper = exchange.getIn().getBody(CamelRpcRequest.class); final JmsQueueNameFactory queueNameFactory = new JmsQueueNameFactory(CamelRpcConstants.JMS_QUEUE_PREFIX, wrapper.getModule().getId(), wrapper.getRequest().getLocation()); exchange.getIn().setHeader(CamelRpcConstants.JMS_QUEUE_NAME_HEADER, queueNameFactory.getName()); exchange.getIn().setHeader(CamelRpcConstants.CAMEL_JMS_REQUEST_TIMEOUT_HEADER, wrapper.getRequest().getTimeToLiveMs() != null ? wrapper.getRequest().getTimeToLiveMs() : CAMEL_JMS_REQUEST_TIMEOUT); if (wrapper.getRequest().getSystemId() != null) { exchange.getIn().setHeader(CamelRpcConstants.JMS_SYSTEM_ID_HEADER, wrapper.getRequest().getSystemId()); } final String request = wrapper.getModule().marshalRequest((RpcRequest)wrapper.getRequest()); exchange.getIn().setBody(request); } }
@Override public void process(Exchange exchange) throws AmazonSQSQueueException { @SuppressWarnings("unchecked") final CamelRpcRequest<RpcRequest,RpcResponse> wrapper = exchange.getIn().getBody(CamelRpcRequest.class); final String requestQueueName = sqsManager.getRpcRequestQueueNameAndCreateIfNecessary( wrapper.getModule().getId(), wrapper.getRequest().getLocation()); final String replyQueueName = sqsManager.getRpcReplyQueueNameAndCreateIfNecessary( wrapper.getModule().getId(), wrapper.getRequest().getLocation()); exchange.getIn().setHeader(CamelRpcConstants.JMS_QUEUE_NAME_HEADER, requestQueueName); exchange.getIn().setHeader(CamelRpcConstants.JMS_REPLY_TO_QUEUE_NAME_HEADER, replyQueueName); exchange.getIn().setHeader(CamelRpcConstants.CAMEL_JMS_REQUEST_TIMEOUT_HEADER, wrapper.getRequest().getTimeToLiveMs() != null ? wrapper.getRequest().getTimeToLiveMs() : CAMEL_JMS_REQUEST_TIMEOUT); if (wrapper.getRequest().getSystemId() != null) { exchange.getIn().setHeader(CamelRpcConstants.JMS_SYSTEM_ID_HEADER, wrapper.getRequest().getSystemId()); } final String request = wrapper.getModule().marshalRequest((RpcRequest)wrapper.getRequest()); exchange.getIn().setBody(request); } }
@Override public void process(Exchange exchange) throws Exception { @SuppressWarnings("unchecked") final CamelRpcRequest<RpcRequest,RpcResponse> wrapper = exchange.getIn().getBody(CamelRpcRequest.class); final JmsQueueNameFactory queueNameFactory = new JmsQueueNameFactory(CamelRpcConstants.JMS_QUEUE_PREFIX, wrapper.getModule().getId(), wrapper.getRequest().getLocation()); exchange.getIn().setHeader(CamelRpcConstants.JMS_QUEUE_NAME_HEADER, queueNameFactory.getName()); exchange.getIn().setHeader(CamelRpcConstants.CAMEL_JMS_REQUEST_TIMEOUT_HEADER, wrapper.getRequest().getTimeToLiveMs() != null ? wrapper.getRequest().getTimeToLiveMs() : CAMEL_JMS_REQUEST_TIMEOUT); if (wrapper.getRequest().getSystemId() != null) { exchange.getIn().setHeader(CamelRpcConstants.JMS_SYSTEM_ID_HEADER, wrapper.getRequest().getSystemId()); } final String request = wrapper.getModule().marshalRequest((RpcRequest)wrapper.getRequest()); exchange.getIn().setBody(request); } }
@Override public void process(Exchange exchange) throws AmazonSQSQueueException { @SuppressWarnings("unchecked") final CamelRpcRequest<RpcRequest,RpcResponse> wrapper = exchange.getIn().getBody(CamelRpcRequest.class); final String requestQueueName = sqsManager.getRpcRequestQueueNameAndCreateIfNecessary( wrapper.getModule().getId(), wrapper.getRequest().getLocation()); final String replyQueueName = sqsManager.getRpcReplyQueueNameAndCreateIfNecessary( wrapper.getModule().getId(), wrapper.getRequest().getLocation()); exchange.getIn().setHeader(CamelRpcConstants.JMS_QUEUE_NAME_HEADER, requestQueueName); exchange.getIn().setHeader(CamelRpcConstants.JMS_REPLY_TO_QUEUE_NAME_HEADER, replyQueueName); exchange.getIn().setHeader(CamelRpcConstants.CAMEL_JMS_REQUEST_TIMEOUT_HEADER, wrapper.getRequest().getTimeToLiveMs() != null ? wrapper.getRequest().getTimeToLiveMs() : CAMEL_JMS_REQUEST_TIMEOUT); if (wrapper.getRequest().getSystemId() != null) { exchange.getIn().setHeader(CamelRpcConstants.JMS_SYSTEM_ID_HEADER, wrapper.getRequest().getSystemId()); } final String request = wrapper.getModule().marshalRequest((RpcRequest)wrapper.getRequest()); exchange.getIn().setBody(request); } }
@Override public void configure() throws Exception { final String requestQueueName = sqsManager.getRpcRequestQueueNameAndCreateIfNecessary(module.getId(), identity.getLocation()); final JmsEndpoint endpoint = getContext().getEndpoint(String.format("jms:queue:%s?connectionFactory=#connectionFactory" + "&correlationProperty=%s" + "&asyncConsumer=true", requestQueueName, AmazonSQSRPCConstants.AWS_SQS_CORRELATION_ID_HEADER), JmsEndpoint.class); from(endpoint).setExchangePattern(ExchangePattern.InOut) .process(new SystemIdFilterProcessor(identity.getId())) .process(new AmazonSQSServerProcessor(module)) .routeId(getRouteId(module)); } }
@Override public void configure() throws Exception { final String requestQueueName = sqsManager.getRpcRequestQueueNameAndCreateIfNecessary(module.getId(), identity.getLocation()); final JmsEndpoint endpoint = getContext().getEndpoint(String.format("jms:queue:%s?connectionFactory=#connectionFactory" + "&correlationProperty=%s" + "&asyncConsumer=true", requestQueueName, AmazonSQSRPCConstants.AWS_SQS_CORRELATION_ID_HEADER), JmsEndpoint.class); from(endpoint).setExchangePattern(ExchangePattern.InOut) .process(new SystemIdFilterProcessor(identity.getId())) .process(new AmazonSQSServerProcessor(module)) .routeId(getRouteId(module)); } }