0

我有入站消息侦听器适配器,当出站适配器无法打开目标队列时,源队列中的消息会丢失。我正在使用 spring-io 进行 jms 队列消息传输。

消息到达目标队列或留在源队列后如何提交传输?

4

2 回答 2

0

这只是从消费者到生产者的交易传播问题。您可以通过执行以下附加配置轻松修复它。

如果您正在使用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" />

希望它能解决你的问题。

于 2014-04-22T07:32:00.767 回答
0

设置acknowledge="transacted"message-driven-channel-adapter.

于 2014-04-12T15:42:18.990 回答