Hello,
Using JMS component to consume messages from a queue with the following example 
code using a pollEnrich:

@Override
public void configure() throws Exception {

   // Exception handling removed to simplify
   from("direct:testRoute")
      .routeId("test1-route-id")
      .loopDoWhile(body().isNotNull())
         .pollEnrich()
         .simple("jms:queue:{{work.queue.name}}")
         .timeout(10000)
         .choice()
            .when(body().isNotNull())
               .setHeader(Exchange.HTTP_METHOD, simple(HttpMethod.POST.name()))
               .setHeader(Exchange.CONTENT_TYPE, simple("application/json; 
charset=UTF-8"))
               .to("{{rest.api.endpoint}}")
               .process(this::manualAckProcessor)   // I want to ACK the 
message here
            .endChoice()
         .end()
      .end();
}

The problem is that the pollEnrich consumption of the JMS message also does, 
depending on component config, either the client acknowledgement or transaction 
commit immediately.

This is much different than using a regular from() JMS consumer like this, 
where the consumed message is committed or ack'ed after the end of the route, 
ie: after the
.to()

   from("jms:queue:{{work.queue.name}}")
      .routeId("test2-route-id")
      .setHeader(Exchange.HTTP_METHOD, simple(HttpMethod.POST.name()))
      .setHeader(Exchange.CONTENT_TYPE, simple("application/json; 
charset=UTF-8"))
      .to("{{rest.api.endpoint}}")
      .end();

Is there a way to configure or block the pollEnrich from either committing or 
ack'ing right away?
Can I implement a JMS manual acknowledgement?

thanks,
jvh

ps: using Spring 2.6.2 with Camel 3.18.4

Reply via email to