当前位置: 首页 > news >正文

RocketMq | 概念 - [生产 消费]

目录
  • 生产者:Producer
  • 消费者:Consumer
  • 消费者组:Consumer Group
  • 消费者组与 topic 的关系
  • 消费工作模式
  • 消费者组消费模式
  • 消费者工作模式
  • 消息过滤
  • 消费结果:ConsumeResult
  • 消息位点:MessageQueueOffset
  • 消费位点:ConsumerOffset
  • MessageQueueOffset/ConsumerOffset/MinOffset/MaxOffset

生产者:Producer

消息生产者用于把业务应用系统里产生的消息发送到 broker 服务器

消费者:Consumer

消费者用于从 broker 服务器拉取消息,并将其提供给业务系统处理
日常沟通中所说 consumer 可能对应两个东西(尤其对于 apache-rocketmq 而言)
特定场景下需注意区分,其具体关系参考 消费 | 全流程

  • rocketmq 的 consumer 提供从 broker 拉取消息并交由业务系统处理的能力
  • 业务系统的 consumer 专指处理消息体的部分,本质上是 consumerHandler

消费者组:Consumer Group

一个需要消费消息的服务实例是一个消费者,消费者组就是对其的分组
一个消费者组内的所有消费者,可以直接认为它们逻辑上是一个消费者,具有一样的订阅关系、消费逻辑

消费者组与 topic 的关系

多对多,
一个消费者组可以订阅多个 topic
个消费者组可以定义一个 topic

消费工作模式

可以这么理解 Consumer 与 Consumer Group 的关系:
对于一个消息而言,实际上是被一个(或几个)消费者消费
对于一个 topic 而言,实际上是被一个(或多个)消费者组消费

这两种消费,分别具有多种工作模式,在需要区分的场景,统一区分为

  • 消费者组消费模式
  • 消费者工作模式

消费者组消费模式

用于描述一个消费者组如何消费其订阅的 topic

  • 广播消费
    消费者组中每个消费者都完整消费订阅的所有消息,即一人轮一遍
    使用场景:下发系统事件(通知所有节点),下发配置变更
  • 集群消费
    也叫共享消费,不同版本的中文文档有区别,以英文名词为准
    消费者组中所有消费者一起完整消费订阅的所有消费一次,即大家一起瓜分
    适用场景:几乎所有业务场景

特别注意:广播还是集群是消费者端的概念,因此不能站在生产者角度进行分辨

消费者工作模式

消费者的职责是:从 broker 服务器拉取消息,并将其提供给应用程序
其工作模式主要用于描述如何从 broker 拉取消息,后面交由业务系统处理的部分无所谓区别

  • pull
    消费者主动从 broker 拉取消息
  • push
    rocketMq 主动推送消息到消费端
    Apache RocketMq 实际工作的 Consumer 是 DefaultMQPushConsumer,是 push 模式
    但是底层实际执行,或者其实际逻辑是 pull 模式

消息过滤

消息过滤会直接影响什么样的消息被 consumer 获取

  • 消息过滤一律发生在 consumer 获取消息时
  • 消息过滤一律由 server 端进行,但可能需要 consumer 端二次过滤

rocketMq 支持两种过滤方式

  • TAG:推荐,相当于 mysql 的 ref 级索引,基于 consumequeue 文件实现,由 broker 负责
  • SQL92:原则上禁止,相当于 myslq 开启了查询缓存的全表扫描,基于 commitlog 文件实现,由 filter 模块负责

消费结果:ConsumeResult

即 consumer 消费消息的结果
不同消费者工作模式下会有不同的枚举集,可以简单的概括为如下两种

  • 消费成功:CONSUME_SUCCESS
  • 稍后重试:RECONSUME_LATER

消息位点:MessageQueueOffset

消息在 consumequeue 中的位置,
其值为 0,1,2...,表示当前消息在当前 topic、当前 queue 中是第几条(不是对应 commitlog 的物理偏移量)
具体概念见 原理 | 消息存储

消费位点:ConsumerOffset

用于记录某个消费者的消费进度,本质就是个消息位点
可以直接理解消费位点是一个指针,指向下一个需要被消费的消息位点
对于同一个 topic 下同一个消息队列

  • 集群模式下,不同消费者组下分别独立记录
  • 广播模式下,不同消费者下分别独立记录

MessageQueueOffset/ConsumerOffset/MinOffset/MaxOffset

可以用下面的结构描述上述数据

topic-s:q0: a,dgid0: @bgid1: @cq1: x,zgid2: @y
topic-t:q0: h,jgid3: @i

上述 abcd hij xyz 均是消息点位 MessageQueueOffset,表示此消息在当前队列的位置(第几条消息)
axh 同时是对应队列的 MinOffset,表示当前队列现在记录的最前面的消息是第几条,< axh 的那些消息已经过期清除了
dzj 同时是对应队列的 MaxOffset,表示当前队列现在记录的最新消息是第几条,如果当前队列再接收到新消息才是 > dzj 的部分
bcyi 同时是对应消费者组的 ConsumerOffset,表示当前消费者组再消费,应该消费哪条消息

http://www.jsqmd.com/news/321881/

相关文章:

  • 2026年口碑不错的中国工商类民办高校有哪些,武汉工商学院在列
  • 西双版纳州英语雅思培训辅导机构推荐:2026权威出国雅思课程中心学校口碑排行榜
  • 现代智能汽车中的总线技术
  • 微信小程序用户破6.2亿,商家如何选择搭建平台?
  • 2026年烟台营销策划公司推荐:多场景实战评测,解决预算与效果不匹配痛点
  • 2025年末必看!本地烧菜火锅品牌,一口入魂超惊艳,烧菜火锅/火锅/美食/特色美食,烧菜火锅品牌哪家好
  • Jenkins从零搭建到自动化部署的完整实践指南 - 指南
  • Luogu P13497 【MX-X14-T7】墓碑密码
  • Spring事件机制
  • 导师推荐专科生必用TOP8一键生成论文工具
  • Spring的Bean后处理器
  • Bootloader 签名校验!
  • 软件测试面试100问(含答案+文档)
  • 浅谈斜率优化 DP
  • 如何解决React组件props传值只读属性修改导致的报错问题
  • 告别 AgentExecutor:LangChain v1.0+ Agent 模块深度迁移指南与实战全解析
  • 为什么你的AI模型总偏置?2026年公平性测试术
  • 如何解决React Hook useEffect缺少依赖导致的无限循环/数据不更新问题
  • 基于AT89C51的节水灌溉自动控制系统的设计
  • 探讨诚信的东北麻辣烫加盟品牌企业,糊涂婶口碑好吗?
  • 生成式AI测试框架的进化图谱:从自动化脚本到智能体协同
  • 2026年YSR正姿铅笔实力厂家排名,价格和性价比哪家更出色?
  • 2026年AI法规更新:软件测试从业者的策略大调整
  • 【人工智能学习-AI入试相关题目练习-第十四次】
  • 本地使用 mongoDB Compass 连接远程服务器上部署的mongoDB数据库
  • MindSpore 大模型高效微调进阶:LoRA/QLoRA 分层适配 + 增量预训练的低显存实践
  • 基于深度学习的无线通信设备指纹识别方法研究
  • 剖析河南省派轩装饰,许昌地区用户评价口碑哪家好
  • 2026年YSR正姿铅笔线下供应商推荐,这些品牌性价比超高
  • 如何用AI预测软件缺陷?2026年智能测试术