0

我们有一个具有主/从配置的 Red Hat AMQ 7.2 代理网络。客户端应用程序发布/订阅代理集群上的主题。

我们如何处理客户端应用程序和代理集群之间的网络连接断开的情况?Red Hat AMQ 是否有本地解决方案,例如客户端本地队列以及本地队列和远程代理之间的 jms 到 jms 桥接,以便网络连接故障不会导致消息丢失。

4

1 回答 1

1

您可以设计一个解决方案,让您的客户端使用本地代理,而本地代理将消息桥接到远程代理。当然,本地代理永远不会失去与本地客户端的网络连接,因为一切都是本地的。但是,如果本地代理失去与远程代理的连接,它将充当缓冲区并存储消息,直到与远程代理的连接恢复。一旦连接恢复,本地代理会将存储的消息转发到远程代理。这将允许生产者继续工作,就好像实际上没有任何失败一样。但是,您需要手动配置所有这些。

也就是说,即使您不实施这样的解决方案,即使客户端遇到网络连接丢失,也绝对不需要任何消息丢失。如果您发送持久(即持久)消息,则默认情况下,客户端将等待代理的响应,告诉客户端代理已成功接收并将消息持久保存到磁盘。更复杂的交互可能需要本地 JMS 事务,甚至更复杂的交互可能需要 XA 事务。无论如何,有一些方法可以在不实施某种本地代理解决方案的情况下消除消息丢失的可能性。

于 2020-05-01T13:45:38.197 回答