在apache camel中使用JMS路由时,事务客户端和transacted = true之间有什么区别?

时间:2016-11-07 12:19:03

标签: java transactions apache-camel jms

我有一条骆驼路线,其中起点和终点都是jms。 我也有错误处理ON。

现在,我想用jms事务处理程序保护这个消息处理。为此我有两个选择:

  1. 配置要使用的路由here
  2. 或者只是将JMS端点配置为使用transacted=true
  3. 所示的int *out; out=(int *) malloc(sizeof(int) * 10);

    两者有什么区别?谁能告诉我哪一个更好,哪个更好?

1 个答案:

答案 0 :(得分:2)

根据this(参见Claus Ibsen的回答)create确保Camel处理在TX上下文中运行。如果不这样,TX上下文仅用于代理(并且仅在来自相同JMS会话的相同工作单元内)。而<transacted>允许事务消费消息。还有一个例子,你实际上想要使用transacted=true(从http端点消费):

<transacted>

因此,如果您只是将消息从一个JMS端点传递到同一个代理的另一个JMS端点,那么您似乎并不需要事务处理路径。