RabbitMQ/RocketMQ/Kafka 消息顺序

RabbitMQ

RabbitMQ 无法做到消息有序的原因:

1.RabbitMQ支持一个队列多个消费者进行消费,并行处理消息无法保证顺序。

2.RabbitMQ支持重试及超时重试机制,这也是导致无法顺序消费的原因(即使只有一个队列一个消费者 )。

RocketMQ

RabbitMQ 实现顺序消费:

1.需要有序的消息投入相同的队列,同时只有一个线程消费(但这个也无法100%解决,重试机制是个坑)。

2.RocketMQ只能保证消息的局部有序,无法保证全局有序。

3.RocketMQ 提供两种消费模式,一种是并行消费模式,另一种是顺序消费模式。当需要顺序消费时,只有保证需要保证顺序的消息进入同一个队列(指定队列),同时设置为顺序消费模式。

4.当设置为顺序消费模式时,消费方式会变成单线程模式,队列上锁。当消费失败时,当前线程会等待一个指定时间,然后再尝试消费这个消息。这个过程会无限次尝试直至消费成功。所以业务方需要做一定失败处理,当失败次达到一定次数,要返回SUCCESS,否则会一直卡在当前消息。

5.但也有个缺陷,在多主从的情况下,无法保证顺序消

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值