Rocket如何实现顺序消费

RocketMQ 支持两种消息模式

集群消费( Clustering )和广播消费( Broadcasting )。

集群消费:同一 Topic 下的一条消息只会被同一消费组中的一个消费者消费。也就是说,消息被负载均衡到了同一个消费组的多个消费者实例上。

广播消费:当使用广播消费模式时,每条消息推送给集群内所有的消费者,保证消息至少被每个消费者消费一次。

全局有序

在RocketMQ中,如果使消息全局有序,可以为Topic设置一个消息队列,使用一个生产者单线程发送数据,消费者端也使用单线程进行消费,从而保证消息的全局有序,但是这种方式效率低,一般不使用

局部有序

假设一个Topic分配了两个消息队列,生产者在发送消息的时候,可以对消息设置一个路由ID,比如想保证一个订单的相关消息有序,那么就使用订单ID当做路由ID,在发送消息的时候,通过订单ID对消息队列的个数取余,根据取余结果选择消息队列,这样同一个订单的数据就可以保证发送到一个消息队列中,消费者类实现MessageListenerOrderly接口监听处理有序消息,这就是RocketMQ的局部有序,保证消息在某个消息队列中有序。

java 复制代码
// 消费者监听类
@Slf4j
@Component("orderConsumer")
public class OrderConsumer implements MessageListenerOrderly, InitializingBean {
     @Override
    public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs, ConsumeOrderlyContext context) {
        return null;
    }

    
}
相关推荐
Volunteer Technology22 分钟前
Lua基础+Lua数据类型
开发语言·junit·lua
回家路上绕了弯37 分钟前
深度理解 volatile 与 synchronized:并发编程的两把钥匙
java·后端
程序员清风38 分钟前
ThreadLocal在什么情况下会导OOM?
java·后端·面试
在打豆豆的小潘学长1 小时前
【R语言】多样本单细胞分析_SCTransform+Harmony方案(2)
开发语言·r语言
Asmalin2 小时前
【代码随想录day 16】 力扣 112. 路径总和
java·算法·leetcode
fenglllle2 小时前
springboot 2.4跨域变化和swagger结合的问题
java·spring boot·spring
liliangcsdn3 小时前
docker缓存目录转移设置和生效过程
java·docker·容器
我们从未走散3 小时前
Redis学习笔记-----Redis内存回收
java·redis·笔记·学习
huluang3 小时前
Word XML 批注范围克隆处理器
开发语言·c#
C4程序员3 小时前
北京JAVA基础面试30天打卡06
java·开发语言·面试