【发布时间】: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