I'm developing a web application that when user click on a button, a string is sent via socket to another server where a camel server is running.
Here message is processed to create a new string that will be sent to a jms queue. Communications from webapp / camel server / jms queue works but every time I click on button a nw couple of NettyServerTCPWorker/NettyEventExecutorGroup being created. Here my server code: package nettyToJms; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jms.JmsComponent; import org.apache.camel.component.netty4.NettyConstants; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.impl.SimpleRegistry; import com.ibm.msg.client.jms.JmsConnectionFactory; import com.ibm.msg.client.jms.JmsConstants; import com.ibm.msg.client.jms.JmsFactoryFactory; import com.ibm.msg.client.wmq.WMQConstants; import io.netty.handler.codec.string.StringDecoder; import io.netty.handler.codec.string.StringEncoder; public class nettyToJmsTemplate { private static String nettyURL = "netty4:tcp://[::]:50300"; private static Boolean loaded = false; public void start() throws Exception { StringDecoder stringDecoder = new StringDecoder(); SimpleRegistry simpleRegistry = new SimpleRegistry(); simpleRegistry.put("stringEncoder", new StringEncoder()); simpleRegistry.put("stringDecoder", new StringDecoder()); CamelContext context = new DefaultCamelContext(simpleRegistry); JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER); JmsConnectionFactory cf = ff.createConnectionFactory(); cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, "localhost"); cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, ""); cf.setIntProperty(WMQConstants.WMQ_PORT, 1414); cf.setStringProperty(WMQConstants.WMQ_CHANNEL, "SYSTEM.DEF.SVRCONN"); cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT); cf.setStringProperty(WMQConstants.WMQ_APPLICATIONNAME, "CLSPlusToMQCamel"); cf.setIntProperty(WMQConstants.ACKNOWLEDGE_MODE, JmsConstants.AUTO_ACKNOWLEDGE); context.addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(cf)); context.addRoutes(new RouteBuilder() { public void configure() { from(nettyURL+"?decoder=#stringDecoder&disconnect=true&exchangePattern=InOnly").process(new Processor() { public void process(Exchange exchange) throws Exception { String body = exchange.getIn().getBody(String.class); exchange.getOut().setBody("Bye " + body); // some condition which determines if we should close exchange.getOut().setBody("Bye " + body); exchange.getOut().setHeader(NettyConstants.NETTY_CLOSE_CHANNEL_WHEN_COMPLETE, true); } }) .inOnly("jms:TEST").to("stream:out"); } }); System.out.println("start context!"); context.start(); System.out.println("wait"); System.out.println("loaded"); /* * while (loaded != true) { System.out.println("in attesan"); } context.stop(); */ // System.out.println("stop context!"); } public static void main(String args[]) throws Exception { nettyToJmsTemplate j = new nettyToJmsTemplate(); j.start(); } private Processor executeFirstProcessor() { return new Processor() { @Override public void process(Exchange exchange) { System.out.println("Hai scritto : " + exchange.getIn().getBody()); } }; } private Processor processFileContentInXml() { return new Processor() { @Override public void process(Exchange exchange) throws Exception { try { String messaggio = (String) exchange.getIn().getBody(); System.out.println("msg:" + messaggio); exchange.getOut().setBody(buildXmlFilecontent(messaggio)); } catch (Exception ex) { System.out.println(ex.getMessage()); } } private String buildXmlFilecontent(String message) { return "<?xml version=\"1.0\" encoding=\"UTF-8\"?><messaggio>" + message + "</messaggio>"; } }; } }