如何保证mq消息的可靠性

拿rabbitmq举例吧

它有两种方案,一个是开启事务,但这种会降低性能;

还有种异步confirm机制,在生产者这边,mq消息成功消费后会有一个异步回调,所以通常会用这个模式。

光做这个常规情况下够了,如果考虑宕机,还有其他极端情况,要开启持久化,和使用数据库记录消息流水。

另外mq自动的ack只保证消息已经发给消费者了,但是不保证消费者正确处理了,所以还可以使用消息应答机制,这需要关闭自动ack,采用手动ack;不过上一步其实只要使用了数据库,这一步也可以不做,约定消费端去更新数据库也能确保消息正确消费。

 如果觉得使用数据记录消息占用资源,可以使用redis做这个操作

posted @ 2023-07-16 02:05  时间羚羊  阅读(57)  评论(0编辑  收藏  举报