Java 在ApacheCamel中使用JMS路由时,事务客户端和Transaction=true之间有什么区别?
我有一个驼峰路由,其中从和到端点是jms。 我也有错误处理 现在,我想用jms事务处理程序来保护这个消息处理。为此,我有两个选择:Java 在ApacheCamel中使用JMS路由时,事务客户端和Transaction=true之间有什么区别?,java,transactions,apache-camel,jms,Java,Transactions,Apache Camel,Jms,我有一个驼峰路由,其中从和到端点是jms。 我也有错误处理 现在,我想用jms事务处理程序来保护这个消息处理。为此,我有两个选择: 如图所示,配置要使用的路由 或者只需将JMS端点配置为使用transact=true,如图所示 两者之间有什么区别?有人能告诉我哪一个更好,使用哪一个吗?根据(参见Claus Ibsen的回答)确保Camel处理在TX上下文中运行。其中,TX上下文仅用于代理(并且仅在来自同一JMS会话的同一工作单元内)。而transact=true支持消息的事务性消费。这里还有一个
transact=true
,如图所示
确保Camel处理在TX上下文中运行。其中,TX上下文仅用于代理(并且仅在来自同一JMS会话的同一工作单元内)。而transact=true
支持消息的事务性消费。这里还有一个示例,说明您实际希望在哪里使用
(从http端点消费):
因此,如果您只是在同一个代理上将消息从一个JMS端点传递到另一个JMS端点,看起来您实际上并不需要事务处理的路由。只需补充一点说明-如果您将路由标记为
事务处理
,则事务将包装您在路由中使用的所有其他事务资源-例如,您可以执行的任何数据库写入。如果使用transact=true
,则事务将仅包装该单一端点的JMS组件。
from jetty:http
transacted
to jms
to file