🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
消息持久化是为了防止消息丢失采取的措施,如果一个生产者先生产了消息,消费者再启动,那么可能就会导致该消费者接收不到生产者之前已经生产的消息,导致消息丢失。 <br/> 与解决【重复消费问题】一样,进行消息持久化也是依靠<mark>分组</mark>来实现。 <br/> 对 8802 不分组,对 8803 分组,然后先启动 8801 生产消息,再启动 8802、8803,得到如下结果。 访问8801生产消息:http://localhost:8801/sendMessage ``` 生产者:1becf833-a0c0-4361-b99f-460dc76769fa 生产者:f815fcb3-1d51-4f01-8656-19ae7036fabd 生产者:51dda360-02a3-4a7a-93db-e174fd8bdc71 8802消费者没有接收到消息! 8803消费者:1becf833-a0c0-4361-b99f-460dc76769fa 8803消费者:f815fcb3-1d51-4f01-8656-19ae7036fabd 8803消费者:51dda360-02a3-4a7a-93db-e174fd8bdc71 ``` 由于没有对 8802 分组,所以 8802 接收不到 8801 已经生产的消息,但是对于 8802 启动后再生产的消息是可以被 8802 消费到的。 由于已经对 8803 进行分组,对于生产者已经生产的消息,消费者依然能够接收到,保证了消息的不丢失。当然对于 8803 启动后再生产的消息是也是可以被 8803 消费到的。