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

相关推荐
陈平安Java and C14 分钟前
RabbitMQ高级特性2
rabbitmq
程序员 小柴4 小时前
RabbitMQ的工作模式
分布式·rabbitmq·ruby
RainbowSea1 天前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea1 天前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
ChinaRainbowSea1 天前
1. 初始 RabbitMQ 消息队列
java·中间件·rabbitmq·java-rabbitmq
千层冷面1 天前
RabbitMQ 发送者确认机制详解
分布式·rabbitmq·ruby
ChinaRainbowSea1 天前
3. RabbitMQ 的(Hello World) 和 RabbitMQ 的(Work Queues)工作队列
java·分布式·后端·rabbitmq·ruby·java-rabbitmq
hycccccch2 天前
Canal+RabbitMQ实现MySQL数据增量同步
java·数据库·后端·rabbitmq
陈平安Java and C2 天前
RabbitMQ简单介绍和安装
rabbitmq
陈平安Java and C2 天前
RabbitMQ应用2
rabbitmq