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

    
}
相关推荐
历程里程碑3 分钟前
子串-----和为 K 的子数组
java·数据结构·c++·python·算法·leetcode·tornado
独自破碎E6 分钟前
字符串相乘
android·java·jvm
王多鱼鱼鱼12 分钟前
QT如何将exe打包成可执行文件
开发语言·qt
DokiDoki之父15 分钟前
边写软件边学kotlin(一):Kotlin语法初认识:
android·开发语言·kotlin
liu****16 分钟前
Qt进阶实战:事件处理、文件操作、多线程与网络编程全解析
开发语言·网络·数据结构·c++·qt
草原上唱山歌18 分钟前
C++如何调用Python代码
开发语言·c++·python
木子啊20 分钟前
PHP中间件:ThinkCMF 6.x核心利器解析
开发语言·中间件·php
崇山峻岭之间21 分钟前
Matlab学习记录40
开发语言·学习·matlab
Java后端的Ai之路22 分钟前
【Python教程11】-文件
开发语言·python
东东51623 分钟前
OA自动化居家办公管理系统 ssm+vue
java·前端·vue.js·后端·毕业设计·毕设