What version of Camel do you use? On Thu, Feb 4, 2016 at 11:03 AM, d1x <[email protected]> wrote: > I'm using SJMS (simple JMS) component for consuming messages from JMS broker > (e.g. ActiveMQ). > When I'm stopping Camel Context, I'm used to that consumers will stop > accepting new messages (in case JMS I would expect consumer will stop > reading new messages from broker and will finish only processing ones). But > it does not work for SJMS. When I stop camel context with SJMS consumer, it > keeps reading messages forever (as long as there are any present in broker > queue). > > Am I misusing the SJMS component or is it a bug? > > Here is the code I'm using for testing (I pre-fill ActiveMQ queue test with > 100 messages for example): > > public class Test { > > public static void main(String[] args) throws Exception { > RouteBuilder rb = new RouteBuilder() { > @Override > public void configure() throws Exception { > from("sjms:queue:test?consumerCount=5") > .process(new Processor() { > @Override > public void process(Exchange exchange) throws > Exception { > Thread.sleep(1000); // not to consume all > messages instantly > System.out.println("Processed message " + > exchange.getExchangeId()); > } > }); > } > }; > > CamelContext context = new DefaultCamelContext(); > context.getShutdownStrategy().setTimeout(2 * 1000); // 2 seconds is > enough for already fetched messages > addJmsComponent(context); > context.addRoutes(rb); > > System.out.println("=====> Starting context"); > context.start(); > Thread.sleep(5 * 1000); // Consume few messages at the beginning > > System.out.println("=====> Stopping context"); > context.stop(); > System.out.println("=====> Context stopped"); // Will not get here > as long as there are any messages left in the queue > } > > private static void addJmsComponent(CamelContext context) { > ConnectionFactory factory = new > ActiveMQConnectionFactory("tcp://localhost:61616"); > ConnectionFactoryResource connResource = new > ConnectionFactoryResource(5, factory); > SjmsComponent comp = new SjmsComponent(); > comp.setConnectionResource(connResource); > context.addComponent("sjms", comp); > } > } > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/CamelContext-stop-with-SJMS-consumer-does-not-stop-consuming-messages-from-broker-tp5777207.html > Sent from the Camel - Users mailing list archive at Nabble.com.
-- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2
