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