【问题标题】:Spring Integration auto reconnect to IBM MQSpring Integration 自动重新连接到 IBM MQ
【发布时间】:2015-11-06 08:01:09
【问题描述】:

我正在使用 Spring Integration 连接到 IBM MQ。我有一个流程,我从入站队列收到一条消息,如果发生任何错误,消息将移至错误队列。 如果我的应用程序启动并且 IBM MQ 停止运行,我的服务是否仍将运行或抛出任何错误?如果 IBM MQ 在没有重新启动服务器的情况下启动,Spring Integration 是否会再次重新连接? 我认为有一个 recoveryInterval 参数 DefaultMessageListenerContainer 类,如果 MQ 连接中断,它将尝试恢复。我的理解正确吗?

谢谢 萨钦

【问题讨论】:

    标签: spring-integration ibm-mq


    【解决方案1】:

    是的,它会继续尝试重新连接;请务必在 DMLC 中使用 acknowledge=transacted(或 setSessionTransacted(true))以避免丢失消息。

    【讨论】:

    • 是的,这就行了。谢谢。我们已经为 DMLC 确认 = 交易。如果消息处理正在进行中并且 MQ 发生故障并且消息有一些应该进入错误队列的错误,但是当 MQ 停止时,它不会将消息发送到错误队列中。我们尝试了这种情况,但消息已丢失。我认为消息将进入入站队列,或者一旦 MQ 启动,它将进入错误队列,但似乎并没有以这种方式工作。我们如何处理上面的场景?
    • 您需要确保侦听器容器线程不会将消息传递给另一个线程;如果是这样,则该消息将在那时被删除。如果您将所有内容都保留在容器线程上,如果代理出现故障,正在进行的消息将被回滚。
    • 我如何确认消息已移交给另一个线程?我完全依赖容器线程。
    • 谢谢 Gary 它解决了这个问题。 recoveryInterval 不断尝试重新连接。无论如何我可以配置重新连接到 MQ 两次,如果出现同样的问题,然后停止入站适配器?
    猜你喜欢
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2018-07-07
    • 1970-01-01
    • 2016-01-21
    • 2017-09-10
    • 1970-01-01
    相关资源
    最近更新 更多