1. 如何保证消息正确发送至RMQ
- 发送方确认模式
- 信道设置为confirm模式
- 投放到目的队列的时候回返回消息的唯一ID
- 如果报错会得到 not ack消息
- 接收方确认机制
- 消费者接收且确认后,才能安全的把消息删除
- 如果接收未确认且断开连接则重新分发
- 如果接收未确认且连接则认定繁忙
2. 如何避免重复投递或消费
- 在消息生产时, 生成inner - msg -id, 去重
- 在消息消费时, 需要有一个bizld 统一业务全局唯一作为去重依据
3. 保证消息不丢失
和redis的aof rdb一样,保证不丢失需要持久化
RMQ也有持久化日志
4. 如何保证消息的顺序性
只有一个消费者能直接保证顺序性
否则则通过全局ID保证 消费者顺序消费或者生产者生成顺序
5. 消息基于什么传输
基于信道传输, 信道基于TCP中的虚拟链接