如果在处理给定的Camel路由时出现问题,我的要求是将消息留在源队列中,我的comsumer在ActiveMQ中进行轮询 .
我的理解是我需要有一个XA事务来处理这个问题 . 我想通过Java DSL设置Camel . 没有EE容器 .
我已经采用这个例子来工作XA setup for Camel with Atomikos . 基于此,我创建了另一个@Test .
有一个RouteBuilder来创建一个如下所示的测试路径:
from("jms:xa_input?transacted=true")
.transacted("PROPAGATION_REQUIRED")
.log("Processing message: ${body}")
.process(new ThrowExceptionProcessor(new Exception("error)))
.to("jms:xa_output");
例外应模拟失败的目的地 .
当我现在向xa_input发送消息(通过ActiveMQ的Web控制台)时,消息从队列中出队并消失 . 它没有路由到xa_output或DLQ . 我确实希望该消息保留在xa_input中 .
如何防止ActiveMQ使用者将消息出列?