RocketMQ的Consumer是如何消费消息的
Rocketmq提供了两种主要的消费模式:推送式消费(Push Consumer)和 拉取式消费(Pull Consumer)
一、Consumer消费消息的基本流程
1、实例化Consumer:创建并配置一个Consumer实例
2、订阅主题:指定要订阅的主题和标签
3、注册消息监听器:开始消费消息
4、启动Consumer:开始消费消息
5、处理消息:在监听器中处理接收到的消息
代码示例

详细解释
1、Consumer实例化:
使用DefaultMQPushConsumer类拆功能键Consumer实例化,并指定Consumer Group
Consumer Group用于标识一组具有相同角色的Consumer实例
2、设置NameServer地址:
- 使用 setNamesrvAddr方法设置Rocketmq的NameServer地址
3、订阅主题:
Subscribe方法用于订阅指定的主题
第一个参数是主题名,第二个参数是标签过滤表达式。"*"表示订阅该主题下的所有消息
4、注册消息监听器:
registerMessageListener方法用于注册一个消息监听器
这里使用的是 MessageListenerConcurrently接口,消息并行处理,不保证顺序,但吞吐量高
使用是MessageListenerOrderly接口,单队列单线程处理,保证消息顺序(但性能较低)
在consumeMessage方法中实现具体的消息处理逻辑
5、消息处理:
在监听器的consumeMessage方法中,我们遍历收到的消息列表并打印消息内容
返回 ConsumeConcurrentlyStatus.CONSUME_SUCCESS,表示消息已成功消费
返回 ConsumeConcurrentlyStatus.RECONSUME_LATER,表示消息已失败消息,稍后重试
6、启动 Consumer:
- 调用start方法启动Consumer实例开始消费消息
其它重要概念
1、消费模式:
Push 模式(DefaultMQPushConsumer):Broker 主动推送消息给 Consumer(底层仍是 Consumer 长轮询)
Pull模式:Consumer主动从Broker拉取消息
2、消费过滤:
- 可以通过标签(Tag)或 自定义属性进行消息过滤
3、消费进度:
- Rocketmq会自动管理消费进度,确保消息不会重复消费
4、消息失败处理:
如果消息处理失败,可以返回 ConsumeConcurrentlyStatus.RECONSUME_LATER,Rocketmq会稍后重试
默认最多重试 16次,之后转入死信队列(%DLQ%+ConsumerGroup)
5、消息消费模式(负载均衡):
集群模式:
同一 Consumer Group 下的多个实例 均分队列(如 4 个队列 + 2 个 Consumer,每个 Consumer 处理 2 个队列)
通过 RebalanceService 定时(默认 20s)重新分配队列
广播模式:
- 每个 Consumer 实例消费 全量队列
RocketMQ的Consumer是如何消费消息的的更多相关文章
- 广播消费:允许一个 Group ID 所标识的所有 Consumer 都会各自消费某条消息一次。
什么是消息队列 RocketMQ?_消息队列 RocketMQ-阿里云 https://help.aliyun.com/document_detail/29532.html 2019-01-30 16 ...
- 17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
原文:https://mp.weixin.qq.com/s/lpsQ3dEZHma9H0V_mcxuTw 一.资料文档 二.开发语言 三.支持的协议 四.消息存储 五.消息事务 六.负载均衡 七.集群 ...
- 综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
来源:http://t.cn/RVDWcfe 一.资料文档 Kafka:中.有kafka作者自己写的书,网上资料也有一些.rabbitmq:多.有一些不错的书,网上资料多.zeromq:少.没有专门写 ...
- RocketMQ之消费者启动与消费流程
vivo 互联网服务器团队 - Li Kui 一.简介 1.1 RocketMQ 简介 RocketMQ是由阿里巴巴开源的分布式消息中间件,支持顺序消息.定时消息.自定义过滤器.负载均衡.pull/p ...
- RocketMQ学习笔记(13)----RocketMQ的Consumer消息重试
1. 概念 Producer端重试: 生产者端的消息失败,也就是Producer往MQ上发消息没有发送成功,比如网络抖动导致生产者发送消息到MQ失败. 这种消息失败重试我们可以手动设置发送失败重试的次 ...
- rocketmq 以广播方式实现消费者消费消息
package com.bfxy.rocketmq.model; import java.util.List; import org.apache.rocketmq.client.consumer.D ...
- rocketmq的以集群模式MessageModel.CLUSTERING实现消费者集群消费消息,实现负载均衡
package com.bfxy.rocketmq.model; import java.util.List; import org.apache.rocketmq.client.consumer.D ...
- 分布式开放消息系统RocketMQ的原理与实践(消息的顺序问题、重复问题、可靠消息/事务消息)
备注:1.如果您此前未接触过RocketMQ,请先阅读附录部分,以便了解RocketMQ的整体架构和相关术语2.文中的MQServer与Broker表示同一概念 分布式消息系统作为实现分布式系统可扩展 ...
- Spring boot实战项目整合阿里云RocketMQ (非开源版)消息队列实现发送普通消息,延时消息 --附代码
一.为什么选择RocketMQ消息队列? 首先RocketMQ是阿里巴巴自研出来的,也已开源.其性能和稳定性从双11就能看出来,借用阿里的一句官方介绍:历年双 11 购物狂欢节零点千万级 TPS.万亿 ...
- PushConsumer 消费消息
CLUSTERING 模式下,消费者会订阅 retry topic // DefaultMQPushConsumerImpl#copySubscription private void copySub ...
随机推荐
- dart变量声明和变量类型
ps==>所有的代码必须放在main方法中 main方法有两种写法 1==> main() { print("你好,dart我们相遇了"); } 2==> voi ...
- Docker安装教程
这里介绍两种安装方法:centsOS安装和Ubuntu安装 CentOS安装 linux内核版本建议3.8以上,作者本人使用的是3.10:查看内核版本命令:uname -r 一般CentOS7以上都可 ...
- Idea报错 【cannot access com.xxx】的【解决办法】
正常操作代码,一个类突然标红,提示 cannot access com.xxx . 执行下面操作,执行完后项目变为正常 但是如果是你代码存在异常,可不是清缓存就能解决了,就要靠自己了哈哈 第一步Fil ...
- SqlServer中根据某几列获取重复的数据将其删除并保留最新一条
有时候,我们某个数据表中,可能有几列的数据都是一样的,此时我们可能想查询出这几列数据相同的所有数据行,并保留最新一条,将其他重复的数据删除. 1.ROW_NUMBER函数 假设我们有如下数据表: 此时 ...
- 使用Docker编译安装运行Doris
一.编译源码 (1)拉取编译镜像docker pull apache/incubator-doris:build-env-1.2 (2)Mac电脑上拉取源码git clone https://gith ...
- dart 数组去重
List list = ['1','2','3','3']; list = list.toSet().toList();
- 『Python底层原理』--Python对象系统探秘
Python是一种非常灵活的编程语言,它的灵活性很大程度上来自于它的对象系统. 在Python中,一切都是对象,这意味着无论是数字.字符串,还是我们自己定义的类的实例,它们在底层都遵循相同的规则. 本 ...
- Thymeleaf 嵌套循环
<label th:each="role:${roles}" class="check-box"> <input th:each=" ...
- pnpm 安装和使用
1. 简介 Fast, disk space efficient package manager: Fast. Up to 2x faster than the alternatives (see b ...
- .NET周刊【2月第4期 2025-02-23】
国内文章 [翻译] 为什么 Tracebit 用 C# 开发 https://www.cnblogs.com/liuliu-66/p/-/why-tracebit-is-written-in-c-sh ...