首页 > RabbitMQ如何做到多用户上线后同时接收到离线消息?

RabbitMQ如何做到多用户上线后同时接收到离线消息?

现在的方法是定义一个Exchange,把模式设为fanout,每一个客户端上线后会建立一个临时队列绑定到这个exchange上。这样,产生的消息就能全部抵达订阅者。

在这个基础上,增加了这样一个需求:如果一个客户端上线,则需要接收到它上一次离线后发布的消息,例如:发布者发布了消息M1、M2,客户端C1在线,则收到M1、M2;客户端C2上线后,同样需要收到M1、M2。这个时候,前面写到的客户端上线创建的临时队列再绑定到exchange上就不管用了,因为这个临时队列在创建的时候不知道M1、M2没有发送给订阅者。

如果用一个持久队列来存放消息M1、M2,则模式由发布者/订阅者模式转变成轮询模式,即C1、C2有可能轮流收到消息,不满足同时收到消息这个需求。

那么,RabbitMQ如何做到这一点:多个客户端能同时收到消息,新上线的客户端能收到离线时没有收到的消息呢?


楼主解决了吗

【热门文章】
【热门文章】