我有入站消息侦听器适配器,当出站适配器无法打开目标队列时,源队列中的消息将丢失。我正在使用spring-io进行jms队列消息传输。
在消息到达目标队列或者停留在源队列后,如何提交传输?
发布于 2014-04-12 23:42:19
在message-driven-channel-adapter上设置acknowledge="transacted"。
发布于 2014-04-22 15:32:01
这只是一个从消费者到生产者的事务传播问题。您可以通过执行以下附加配置来轻松解决此问题。
如果您使用的是DefaultMessageListenerContainer,强烈建议将sessionTransacted设置为true或指定外部transactionManager。
如果未配置消息侦听器容器,而是使用message-driven-channel-adapter,则需要将其acknowledge属性设置为transacted。
要将出站适配器配置为参与事务,需要按如下方式配置JmsTemplate,并将其sessionTransacted属性设置为true
<bean id="outboundJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="outboundCF" />
<property name="defaultDestination" ref="outboundDestination" />
<property name="sessionTransacted" value="true" />
</bean>
<int-jms:outbound-channel-adapter channel="jmsOutChannel" jms-template="outboundJmsTemplate" />希望它能解决你的问题。
https://stackoverflow.com/questions/23032167
复制相似问题