在经纪人网络上使用临时队列进行ActiveMQ故障转移?

时间:2015-04-20 14:06:24

标签: networking activemq failover reply

我们拥有一个由四个经纪人组成的网络,2个"前端"和2"后端" (我将它们称为FB1 FB2 BB1 BB2)。他们在一个像这样的广场联网:

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

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

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

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

如果我在此次交换期间杀死其中一个经纪人,则客户端会成功故障转移给其他人。但是,后续的IntOut(请求 - 回复)消息失败,我看到例外情况:

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

任何人都可以解释为什么会发生这种情况以及如何阻止它?

1 个答案:

答案 0 :(得分:0)

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