RabbitMQ 消息丢失问题处理 2024-03-31 默认分类 暂无评论 1000 次阅读 ![](https://i-cooltea.top/usr/uploads/2024/03/2144231875.png) 三种消息丢失场景 1. 生产端 -> broker 2. broker 持久化前 3. 消费端消费过程中 1. Confirm模式是RabbitMQ提供的一种消息可靠机制。 2. 持久化机制是将消息存储到磁盘, 保证RabbitMQ服务器宕机或重启时, 消息不丢失, 队列和交换器 Durable 属性设置为true ( 持久化会影响性能 在确保不丢失的 场景下使用) 3. Ack事务机制 (消费者) ACK 事务机制用于确保消息被正确消费。当 消息重复消费 1. 事件唯一ID保证消费的时候不会重复 1. 数据库唯一建约束 1. 悲观锁: Redis缓存消息唯一标识, 并设置过期时间 在消费结束后将锁清除 1. 乐观锁: 插入消费记录 重复则丢弃 消息堆积 ![](https://i-cooltea.top/usr/uploads/2024/03/27054027.png) 1. 消费处理过慢: 增加消费者数量、消息预取限制、优化消费者性能(优化业务逻辑 减少处理消息所需时间) 2. 队列配置: 增加队列容量 或者 优化队列配置 3. 消息大小: 消息分片 4. 接受速度慢于发送速度: 消息限流、负载均衡 5. 消费者故障: 利用死信队列, 容错机制 (自动重启和错误处理逻辑) 6. 网络故障: 监控和告警、持久化、设置镜像队列 提高消息的可用性 7. 其他配置: 消息优先级、调整RabbitMQ配置文件描述符限制、内存使用限制 文章目录 三种消息丢失场景 消息重复消费 消息堆积 标签: MQ 转载请注明文章来源 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭