这是我们的网关配置
<int-jms:inbound-gateway
request-destination-name="co.jms.local.InternalDispatcher"
request-channel="dispatch" destination- resolver="serviceJmsDestinationResolver"
connection-factory="serviceConnectionFactory" transaction-manager="transactionManager"
receive-timeout="60000" error-channel="errorLoggingChannel" concurrent-consumers="5" />
因为网关能够处理并发客户端。不会从队列中删除长处理消息,并且它由redeliverymessage处理并发送回队列进行处理。从而导致在db事务中重复处理消息和异常。 作为一种解决方法,我们已经尝试将重新加工延迟时间延长40分钟以进行重处理,这似乎有效,但我发现这种解决方法并不是一个非常积极的方法。 有人可以建议应该修复的内容。 spring-integration-jms.4.1.0 / 4.1.1具有相同的结果。
答案 0 :(得分:0)
我不知道&#34;重新发送延迟&#34;您正在谈论但我非常怀疑Websphere MQ会重新发送进程内消息。我最好的猜测是一些网络故障导致会话关闭(重新排列消息),这使其成为重新传递的候选者。
正如我在评论中所说的那样,长时间持续发出未经确认的消息只是在寻找麻烦。
您应该提出一些其他架构,以便您可以在相当短的时间内收听消息(例如,将其移至进程内数据库表或类似表)。或者,消息传递可能不是解决问题的正确方法。