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;
    }

    
}
相关推荐
kebeiovo4 分钟前
游戏服务端开发:Actor模型详解(Go语言)
开发语言·后端·golang
迷途呀22 分钟前
Python:函数中的参数类型
开发语言·笔记·python·langchain·nlp
Herbert_hwt38 分钟前
建立Java程序开发
java·开发语言
好好沉淀1 小时前
@ExcelIgnoreUnannotated 和 @AutoMapper 详解
java
愚公移码1 小时前
蓝凌EKP18产品:流程虚拟机(PVM)
java·开发语言·前端
十月的皮皮1 小时前
stm20260720-从新手 C 到量产 STM32 工程:程序设计推导指南
c语言·开发语言·stm32·stm32cubemx·hal库
驰骋工作流1 小时前
流程引擎BPM设计之:流程消息
java·工作流引擎·bpm·jflow·ccflow
dogstarhuang1 小时前
从 0 到 1 搭建可收费的 API 开放平台(实战)
java·架构·api
VortMall2 小时前
『平台去经营化』平台治理能力全新重构|VortMall微服务商城系统v1.3.10
java·大数据·微服务·商城系统·开源商城·vortmall·去经营化
Echo缘2 小时前
嵌入式系统C语言资源分类与内存分布分析
c语言·开发语言