PubSub +可靠的消息传递给不可靠的现有订户

Jay*_*dse 5 mule publish-subscribe unreliable-connection rabbitmq reliable-message-delivery

我需要构建一个使用发布/订阅总线的系统(例如Mule,ZeroMQ,RabbitMQ),但是文献都暗示订阅者应用程序可靠地用于接收Pub/Sub总线上他们订阅的主题的消息能够传递信息.

我有一个系统,其中一些应用程序将可靠地连接到发布/订阅总线,但其他应用程序将不会处于活动状态或始终连接到总线.

显而易见的解决方案是在不可靠的应用程序和发布/订阅总线之间建立某种"存在"协议,以便"当前"应用程序立即传递其消息,并且"不存在"应用程序将其消息排队在持久缓冲区中在某种情况下,一旦完成"在线握手",排队的消息就会被传递给新呈现的应用程序.

是否有任何内置此类功能的发布/订阅总线,或者是否有任何开源附加组件可以执行此操作?你能指点我描述这个的任何网址吗?

Rob*_*rop 6

使用任何符合AMQP的代理(例如RabbitMQ),您都可以轻松实现此行为。

为您的使用模式选择正确的交换类型。direct如果您始终要发送到绝对命名的目的地(例如),则需要使用交换chat.messages

如果要进行基于模式的路由,则需要使用topic交换。然后,您可以根据诸如的模式进行路由chat.messages.*

路由在RabbitMQ教程中有更详细的描述。

若要创建您提到的持久订阅,请让每个订阅者创建一个对该订阅者私有的队列。然后将队列绑定到您选择的交换机上的相关路由密钥。

由于每个订户都有自己的队列,因此消息在活动时将由订户使用,而在订户非活动或断开连接时将存储消息。