异步发送/数据同步/分布式事务/削峰填谷
消息丢失
? ?生产者确认机制: 及时重发/记录日志/保存数据库定时重发
? ?消息持久化:交换机/队列/消息持久化
? ? ? 默认内存储存消息,开启持久化功能可以确保缓存在MQ消息不丢失
? ?消费者确认
? ? ? 处理消息后ack回执,manual手动/auto自动/none关闭
? ?消费者retry机制,消费者异常本地重试n次,仍然失败将消息投递到异常交换机,人工
重复消费:
? ? 网络抖动/消费者挂了
? ? ? ?唯一标识/幂等(分布式锁/数据库锁)
延迟队列:进入队列的消息被延迟消费?
? ? ?超时订单/限时优惠(当天签到)/定时发布(当天推送消息)
? ? 死信交换机+TTL
? ?死信交换机(dead-letter-exchange=dl.direct属性)
? ? ?消费者用basic.reject和basic.nack声明消费失败,且消费的requeue参数=false
? ? ?消息过期超时无人消费
? ? ?要投递的队列消息堆积满了,最早的消息可能成为死信
?ttl :消息ttl结束仍未消费,死信(队列)
? ? 队列/消息本身 设置了存活时间;短的时间设置为准
? 延迟队列插件
消息堆积:
? ?增加消费者
? 消费者内部开启线程池加快处理速度(服务器cpu资源)
??扩大队列容积,提高堆积上限
? ? ?惰性队列:x-queue-mode=lazy数据储存在磁盘,消费时才从磁盘中读取到内存,百万条数据储存,性能稳定,受限于磁盘IO,时效性低
高可用机制:
? 普通集群:标准 节点共享部分数据:交换机/队列元信息? ?
? 镜像集群:主从,交换机 队列 队列中消息在各节点间同步备份
? ? ? 创建队列的节点为该队列的主节点,备份到其他节点(镜像节点)
? ? ? ?一个队列的主节点可能是另一个队列的镜像节点
? ? ? 主宕机后镜像节点代替新的主
? 仲裁队列3.8开始 ,主从模式 支持数据强同步raft协议
? ?