RabbitMQ
可靠发送
- 重发或更换通讯方式
- 消息表重试
- 下游服务确认
可靠消费
- 消费重试
- 重试队列(消费失败之后,确认可以重试,生产消息到重试队列)
消息堆积
- 消费速率和生产速率相同
- 不重要消息设置过期时间
- Virtual Host 设置
MaxLentgh或者Overflow策略
幂等性
- 唯一标识(防重表,主键)
- 乐观锁(版本号来控制)
降级处理
- 意外场景考虑手工补偿
- 不重要场景直接丢弃或者降级为其它方案
Quorum队列 和 Classic队列
- Quorum队列是基于Raft协议实现的分布式队列,提供更高的可用性和数据一致性,适用于关键任务和高可靠性需求的场景。
- Classic队列是RabbitMQ的传统队列类型,适用于一般的消息传输需求,性能较高但在节点故障时可能会丢失消息。
- Quorum队列在写入性能上可能略低于Classic队列,但在读性能上通常更优,尤其是在高并发场景下。