Red Hat AMQ 中的客户端本地队列

Client Local Queue in Red Hat AMQ

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

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

您可以制定一个解决方案,让您的客户使用本地代理,并且本地代理将消息桥接到远程代理。当然,本地代理永远不会失去与本地客户端的网络连接,因为一切都是 local。但是,如果本地代理失去与远程代理的连接,它将充当缓冲区并存储消息,直到恢复与远程代理的连接。恢复连接后,本地代理会将存储的消息转发到远程代理。这将使生产者能够继续工作,就好像没有任何事情真的发生过故障一样。但是,您需要手动配置所有这些。

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