在单个路由中,我尝试循环并将多条消息发送到最终队列。但我看到队列中的消息是Uncommitted。只有在我的路由处理完成后才会提交消息。
我想在将消息放入队列后立即在camel中提交消息。
示例路线:
<route >
<from uri="queue1" />
<process ref="Processor1" />
<to uri="direct:loop" />
</route>
<route>
<from uri="direct:loop"/>
<loop>
<constant>5</constant>
<process ref="Processor2"/>
<to uri="queue2"/>
</loop>
</route>
对于上述路由,我需要在处理器2中的exchange.out中发送消息集并发送5次。
目标队列中的消息计数为5,但在调试时我发现发送的消息仍未提交。
答案 0 :(得分:1)
我发现问题是由Camel中的事务引起的。进出被视为一次交易。所以我的所有消息都进入队列但是作为未提交的消息。为了解决这个问题,我使用了JMS传播PROPAGATION_REQUIRES_NEW。
这解决了我的问题。任何人都有更好的建议。