如果在处理给定的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使用者将消息出列?