如何处理暂时不可用的 mq-server?

How to deal with an temporarily unavailable mq-server?

我有两个简单的 spring-boot 应用程序。第一个将消息发送到 artemismq-server,第二个接收消息。这基本上工作正常,但是在发送端处理不可用的 mq-server 的最佳实践是什么?

我没有找到很多关于这个主题的信息。只有基本的“捕获异常并自己处理”的东西。我更愿意在发送方自动缓冲消息(持久化)并重新发送(定期/一旦 mq-server 再次可用)。但是我没有找到任何通用的解决方案。

现在我想知道我是否完全走错了路...

一般来说,如果您希望消息发送方在远程代理不可用的情况下继续正常运行,那么您需要在发送方上设置某种缓冲区。

您可以通过多种不同的方式实现缓冲区,但在您的情况下,我建议配置一个 ActiveMQ Artemis 的本地实例,该实例在您的应用程序中使用 core bridge (or perhaps federation for more complex use-cases) to forward messages to the remote broker. Your sender would send messages to the local instance and the local instance would forward those messages to the remote broker. You could embed 本地代理,或者它可以 运行作为发件人在同一台机器上的单独进程。