RabbitMQ
持续更新中...
如何保证消息不丢失
- 开启生产者确认机制,确保生产者的消息能到到队列,若报错则记录到日志里面
- 开启持久化功能,确保未消费的消息不会丢失(交换机、队列、消息都要持久化)
如何解决重复消费问题
- 消费者设置自动确认机制
- redis分布式锁
- 数据库锁
延迟队列的了解
延迟队列用死信交换机和TTL(消息存活时间实现的)
消息超时未消费就会变成死信,在RabbitMQ中如果消息成为死信,队列可以绑定一个死信交换机,在死信交换机上可以绑定其他队列,在我们发消息的时候可以按照需求指定TTL的时间,这样就实现了延迟队列的功能了。
大量消息堆积如何解决
- 提高消费者消费能力,可以使用多线程
- 增加消费者
- 扩大队列容量,提高堆积上限
- 使用惰性队列:
- 接收到消息后直接存入磁盘而非内存
- 消费者消费才把消息从磁盘加载到内存
- 支持数百万的消息存储