【问题标题】:spring-integration : switch on failover to IBM MQ queuespring-integration :开启故障转移到 IBM MQ 队列
【发布时间】:2017-09-10 00:07:42
【问题描述】:

我们有一种情况需要实现功能来处理以下场景(使用 IBM MQ 和 Spring Integration):

  1. 如果 JMS 队列在日内失败,应用程序应自动连接到另一个定义的队列,而不会丢失消息。

  2. 在应用程序运行时动态更改队列配置,或者即使我们需要重新启动任何未发送的消息也不应该丢失。

由于我们是使用 Spring 集成的新手,请提供您对如何实现良好设计来处理这些场景的看法。

【问题讨论】:

    标签: spring spring-integration ibm-mq


    【解决方案1】:

    您应该为第二个队列再声明一个 JMS 出站通道适配器,并将其作为第二个订阅者(使用order=2)到同一个直接通道。该通道必须配置为load-balancer="none"。这样,如果第一个处理程序无法处理消息,它将被传递给第二个订阅者,依此类推。

    【讨论】:

    • 感谢我们正在使用多个队列测试此场景。但是你能知道 spring 是否会永久恢复使用第二个队列(在第一个队列遇到错误之后)还是会继续检查每个事务(以防第一个队列恢复)并恢复到它?
    • 是的,它总是尝试第一个订阅者,只有在失败时才进入第二个订阅者
    • 所以我认为它会在尝试按顺序检查两个订阅者时为每条消息添加延迟?如果我理解错了,请纠正我......但是我们的应用程序有多个队列并且流量非常大,因此性能是一个非常重要的标准。如果我们可以配置何时重新验证订阅者列表,或者继续使用有效的订阅者列表,那就更好了。
    • 是的,当然每条消息都会有延迟来尝试每个订阅者。如果您需要更复杂的解决方案,您应该考虑更多并涉及许多组件,包括调度以定期检查可用性。在这种情况下,路由器可能会根据计划任务提供的状态来决定去哪里
    猜你喜欢
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    相关资源
    最近更新 更多