【问题标题】:ActiveMQ failover with temporary queues on a network of brokers?ActiveMQ 故障转移与代理网络上的临时队列?
【发布时间】:2015-06-27 07:32:52
【问题描述】:

我们有一个由四个经纪人组成的网络,2 个“前端”和 2 个“后端”(我将它们称为 FB1 FB2 BB1 BB2)。它们像这样在一个正方形中联网:

FB1 .... FB2
 .        .
 .        .
 .        .
BB1 .... BB2

网络连接设置为排除特定队列,但允许转发所有其他队列和主题。网络连接器在前端和后端之间定义了故障转移,因此,例如,如果 BB1 发生故障,那么 FB1 应该进行故障转移并建立到 BB2 的新网络连接。

连接到每一对的客户端也使用故障转移,因此如果其中一个发生故障,它们将故障转移到另一对并继续通信。即客户端连接到 FB1,FB1 失败,客户端故障转移到 FB2。

在我的问题场景中,客户端向前端代理发送 InOut(请求-回复)消息。前端代理将此消息转发到后端代理,在后端代理使用它并生成响应。然后通过临时队列将响应反馈给原始客户端。

如果我在此交换期间杀死了其中一个代理,则客户端会成功故障转移到其他代理。但是,随后的 IntOut (request-reply) 消息失败,我看到如下异常:

org.springframework.jms.InvalidDestinationException: Cannot publish to a deleted Destination: temp-queue://I...

谁能解释为什么会发生这种情况以及我该如何预防?

【问题讨论】:

    标签: networking activemq failover reply


    【解决方案1】:

    临时队列不是集群的。当您请求/回复时,您需要添加一些逻辑,以便在发生故障转移时为 InOut 重新创建临时队列 - 这不会自动发生。

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 2016-06-30
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      • 2019-05-01
      • 2013-08-26
      • 2017-02-04
      • 2020-02-03
      相关资源
      最近更新 更多