消息中间件应用的常见问题与方案?
目录
消息中间件应用的常见问题与方案
Kafka、RabbitMQ 和 RocketMQ 是常见的消息队列,在处理消息顺序性、消息丢失、消息重复、消息积压和延迟消息处理等问题上,各有其特点和方法。
Kafka
RabbitMQ
RocketMQ
消息中间件应用的常见问题与方案 | 得物
MQ消息乱序问题解析与实战解决方案 | 京东
MQ应对丢失、重复、顺序与积压问题的全面策略
消息中间件应用的常见问题与方案
MQ消息乱序问题:
问题:同一个队列/分区的消息MQ会保证局部先进先出顺序,但是不同队列/分区的消息之间不保证有序
解决方案:
Kafka不保证全局消息顺序,但可以通过合理的分区策略和消息键来确保同一账单的消息被发送到同一个分区,从而在一定程度上保证消息的顺序性。
RocketMQ支持顺序消息。但是需要注意这是局部有序,非全局后续。具体实现过程:
1.发送mq消息时,通过selector将同一个业务主键的消息,发送到同一队列中
2.消费方使用MessageListenerOrderly消费局部有序的消息
消息中间件应用的常见问题与方案|得物技术
MQ消息乱序问题解析与实战解决方案 | 京东技术
丢失、重复、顺序与积压问题:
确保消息队列稳定高效:应对丢失、重复、顺序与积压问题的全面策略
Kafka、RabbitMQ 和 RocketMQ 是常见的消息队列,在处理消息顺序性、消息丢失、消息重复、消息积压和延迟消息处理等问题上,各有其特点和方法。
Kafka
- 消息顺序性保证:Kafka 中每个分区内的消息是有序的。将同一业务下的消息设置相同的 key,这些消息就会被发送到同一个分区,从而保证顺序消费。
- 避免消息丢失
- 生产者:设置
RequiredAcks = -1
,确保所有的 Leader 和 Follower 都接收成功后才返回确认,并且在发送失败时进行重试。 - 消费者:将
- 生产者:设置