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

    
}
相关推荐
长勺15 分钟前
Spring中@Primary注解的作用与使用
java·后端·spring
海棠蚀omo18 分钟前
C++笔记-C++11(一)
开发语言·c++·笔记
紫乾201418 分钟前
idea json生成实体类
java·json·intellij-idea
wh_xia_jun24 分钟前
在 Spring Boot 中使用 JSP
java·前端·spring boot
网安INF25 分钟前
CVE-2020-17518源码分析与漏洞复现(Flink 路径遍历)
java·web安全·网络安全·flink·漏洞
Y第五个季节29 分钟前
docker-部署Nginx以及Tomcat
java·开发语言
IT-ZXT88833 分钟前
Tomcat 线程模型详解&性能调优
java·tomcat
小道士写程序1 小时前
Qt 5.12 上读取 .xlsx 文件(Windows 平台)
开发语言·windows·qt
ou.cs1 小时前
c# :this() 和 :base()区别
开发语言·c#
Mikhail_G1 小时前
Python应用函数调用(二)
大数据·运维·开发语言·python·数据分析