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

    
}
相关推荐
Moe4888 分钟前
Redis 缓存三大经典问题:穿透、击穿与雪崩
java·后端·面试
卷Java20 分钟前
Python字典:键值对、get()方法、defaultdict,附通讯录实战
开发语言·数据库·python
liuyao_xianhui20 分钟前
优选算法_翻转链表_头插法_C++
开发语言·数据结构·c++·算法·leetcode·链表·动态规划
happy_baymax23 分钟前
三电平矢量表达式MATLAB实现
开发语言·matlab
xyq202424 分钟前
jEasyUI 创建 XP 风格左侧面板
开发语言
赫瑞25 分钟前
Java中的最长公共子序列——LCS
java·开发语言
于先生吖28 分钟前
零基础开发国际版同城出行平台 JAVA 顺风车预约系统实战教学
java·开发语言
代码雕刻家29 分钟前
2.22.StringBuffer类的常见用法、
java·开发语言
yhole30 分钟前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins
明月(Alioo)1 小时前
Python 并发编程详解 - Java 开发者视角
java·开发语言·python