要求: 我们需要从JMS队列(由不同的应用程序发布)检索消息并将消息保存在我们的JMS队列中。需要整个流程是事务性的,以防万一消息不能保存在下游JMS队列中,那么从上游JMS队列接收的消息就不应该被确认。 我的配置是如下应该在从一个JMS队列持久化到另一个JMS队列时使用JmsTransactionManager
<int-jms:message-driven-channel-adapter
id="MessageDrivenAdapter" channel=" jmsMessageChannel " destination="sourceDestination"
connectionFactory="CF1"
acknowledge="transacted"
/>
<int:channel id=" jmsMessageChannel " />
<int-jms:outbound-channel-adapter id="sendsomemsg"
channel=" jmsMessageChannel " destination=”finalDestination”
connectionFactory="CF2"
session-transacted="true" />
我需要在这种情况下使用一个JmsTransactionManager或者应该是上面的配置足矣。我们可以处理重复的消息,所以我相信我们不需要XA事务。
这些组件正在使用相同的连接工厂。 –
连接工厂不同。编辑过代码。所以相信会需要使用JmsTransactionManager – vjm
不,如果您发现“ChainedTransactionManager”复杂,您需要'JtaTransactionManager'或任何其他XA实现。共享的单个'JmsTransactionManager'不适用于你的情况。 –