We are using camel-sjms 2.15.2 but it can be reproduced with 2.16.2, too.

Claus Ibsen-2 wrote
> What version of Camel do you use?
> 
> On Thu, Feb 4, 2016 at 11:03 AM, d1x <

> zdenek.obst@

> > 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





--
View this message in context: 
http://camel.465427.n5.nabble.com/CamelContext-stop-with-SJMS-consumer-does-not-stop-consuming-messages-from-broker-tp5777207p5777223.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to