RabbitMQ问题

如何实现顺序消费?

消息放入到同一个队列中消费

如何解决消息不丢失?

方案:

如上图:消息丢失有三种情况,解决了以上三种情况就解决了丢失的问题

1、丢失1--->消息在到达交换机的时候;解决:MQ需要开启确认模式

2、丢失2--->在MQ内容丢失的问题;解决:开启消息持久化(交换机设置,队列设置)

3、丢失3--->消息抵达消费者的时候;解决:消费者开始手动ACK

如何解决消费积压?

1、多队列,根据不同消息类型放在不同队列

2、多消费者,根据消息的类型和优先级分配消费者

3、设置TTL,不能无限制阻塞,设置过期时间

如何解决消息重复?

原因:

1、生产者发送消息到MQ,但是由于网络波动,MQ没有回复,生产者又重新发送了一次

2、MQ消息到达消费者时,由于网络波动,没有回复,MQ又重新发送了一次

方案:幂等性

1、消息传递时,需要携带一个唯一ID,将此ID存到redis中

2、接收到消息,先去redis中查,如果有则直接丢弃此消息,如果没有正常消费,将该ID存redis设置TTL

相关推荐
Rain的Java大神之路6 小时前
如何避免订单重复提交
java·redis·后端·面试·架构·rabbitmq·rocketmq
heimeiyingwang2 天前
【架构实战】消息队列选型与异步架构设计:从Kafka到RabbitMQ,一次聊透
架构·kafka·rabbitmq
水无痕simon3 天前
6、六大工作模式-2
java·rabbitmq
lazy H3 天前
不同的消息队列有什么区别?Kafka、RabbitMQ、RocketMQ、Pulsar、ActiveMQ 选型对比
后端·中间件·kafka·rabbitmq·rocketmq
IT机器猫4 天前
RabbitMQ基础二
java·spring boot·分布式·spring cloud·log4j·rabbitmq·springamqp
水无痕simon4 天前
3 RabbitMQ基础
分布式·rabbitmq·ruby
番茄炒鸡蛋加糖5 天前
RabbitMQ 全套复盘 + Nacos+ES+MyBatis-Plus 梳理
分布式·rabbitmq
城管不管7 天前
重生——第九次面试2026.8.13某车一面
分布式·ai·面试·职场和发展·rabbitmq
apgk17 天前
基于Canal实现mysql数据同步到消息队列(RabbitMQ/Kafka)详细操作教程
docker·kafka·rabbitmq
Rain的Java大神之路7 天前
MQ重复消费问题怎么解决
java·经验分享·后端·面试·架构·rabbitmq·rocketmq