作为 RabbitMQ 的新手,我想知道如何处理离线目标节点。
作为一个例子,这个场景:
- 1个日志记录应用程序,将日志存储到一些持久性存储中
- N 个日志发布应用程序,希望通过日志记录服务器将其日志写入持久存储。
将有两种选择:
- 每个发布应用程序都将其日志消息发布到其本地 RabbitMQ 实例,并且日志记录服务器必须订阅其中的每一个
- 日志记录应用程序有它的本地 RabbitMQ 实例,每个日志发布应用程序都在该实例上传递它的消息。
选项 1 将要求我在每次出现或移动新应用程序时重新配置/重新编码/通知录制应用程序。因此,我认为选项 2 是正确的,每个新的发布应用程序都简单地写入记录应用程序的 RabbitMQ 节点。
我唯一苦苦挣扎的是如何处理录制应用程序的节点关闭的情况。我是否需要构建自己的系统来存储消息,直到它重新上线,或者我可以使用 RabbitMQ 的某些功能来处理它?即每个发布应用程序的本地RabbitMQ 是否可以在它重新上线后立即接收消息并将它们转发到记录应用程序RabbitMQ?
我发现有关 Federated 插件的某些内容无法理解是否是解决方案。也许我需要一些不同的东西,或者我必须编写自己的本地排队系统(我希望我不必这样做)来在目标节点离线时对消息进行排队。
任何指向架构示例或解决方案的链接都非常受欢迎。
顺便说一句:https : //groups.google.com/forum/#!topic/easynetq/nILIKSjxyMg 声明您不应该为每个应用程序安装 RabbitMQ 节点,所以也许我应该求助于 MSQM 或 ZeroMQ(?)