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是如何消费消息的的更多相关文章

  1. 广播消费:允许一个 Group ID 所标识的所有 Consumer 都会各自消费某条消息一次。

    什么是消息队列 RocketMQ?_消息队列 RocketMQ-阿里云 https://help.aliyun.com/document_detail/29532.html 2019-01-30 16 ...

  2. 17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列

    原文:https://mp.weixin.qq.com/s/lpsQ3dEZHma9H0V_mcxuTw 一.资料文档 二.开发语言 三.支持的协议 四.消息存储 五.消息事务 六.负载均衡 七.集群 ...

  3. 综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列

    来源:http://t.cn/RVDWcfe 一.资料文档 Kafka:中.有kafka作者自己写的书,网上资料也有一些.rabbitmq:多.有一些不错的书,网上资料多.zeromq:少.没有专门写 ...

  4. RocketMQ之消费者启动与消费流程

    vivo 互联网服务器团队 - Li Kui 一.简介 1.1 RocketMQ 简介 RocketMQ是由阿里巴巴开源的分布式消息中间件,支持顺序消息.定时消息.自定义过滤器.负载均衡.pull/p ...

  5. RocketMQ学习笔记(13)----RocketMQ的Consumer消息重试

    1. 概念 Producer端重试: 生产者端的消息失败,也就是Producer往MQ上发消息没有发送成功,比如网络抖动导致生产者发送消息到MQ失败. 这种消息失败重试我们可以手动设置发送失败重试的次 ...

  6. rocketmq 以广播方式实现消费者消费消息

    package com.bfxy.rocketmq.model; import java.util.List; import org.apache.rocketmq.client.consumer.D ...

  7. rocketmq的以集群模式MessageModel.CLUSTERING实现消费者集群消费消息,实现负载均衡

    package com.bfxy.rocketmq.model; import java.util.List; import org.apache.rocketmq.client.consumer.D ...

  8. 分布式开放消息系统RocketMQ的原理与实践(消息的顺序问题、重复问题、可靠消息/事务消息)

    备注:1.如果您此前未接触过RocketMQ,请先阅读附录部分,以便了解RocketMQ的整体架构和相关术语2.文中的MQServer与Broker表示同一概念 分布式消息系统作为实现分布式系统可扩展 ...

  9. Spring boot实战项目整合阿里云RocketMQ (非开源版)消息队列实现发送普通消息,延时消息 --附代码

    一.为什么选择RocketMQ消息队列? 首先RocketMQ是阿里巴巴自研出来的,也已开源.其性能和稳定性从双11就能看出来,借用阿里的一句官方介绍:历年双 11 购物狂欢节零点千万级 TPS.万亿 ...

  10. PushConsumer 消费消息

    CLUSTERING 模式下,消费者会订阅 retry topic // DefaultMQPushConsumerImpl#copySubscription private void copySub ...

随机推荐

  1. RSA的原理和简单实践

    RSA加密是一种非对称加密,原理是: 使⽤算法可以⽣成两把钥匙 A 和 B 使⽤ A 加密的信息,使⽤ B 可以解开 使⽤ B 加密的信息,使⽤ A 可以解开 ⽇常使⽤中,我们把⼀把作为公钥公开发布. ...

  2. codeblocks快捷键注释

    ctrl+shift+c可以快速注释掉多行. ctrl+shift+x可以取消注释

  3. 天翼云边缘安全加速平台亮相2023亚太内容分发大会暨CDN峰会

    6月29日,第十二届亚太内容分发大会暨CDN峰会在北京召开.大会聚集了行业领/袖.专家和学者,深度探讨CDN的技术发展.应用与未来发展趋势,会上还公布了2023边缘加速创新企业榜单,中国电信天翼云成功 ...

  4. Q:oracle备份表语句

    oracle备份还原表语句 方法1.sql语句(同一数据库服务器) 备份 create table xxx_temp as select * from xxx; 还原 truncate table x ...

  5. Amis坑

    一.特殊字符 1.输入框.多行输入框输入$s字符默认替换成空. 如调用后端接口的输入框输入123$BB123,实际请求的参数为123,$后面的参数消息 解决办法:如确实需要输入$的话,在$前面加\即可 ...

  6. SpringBoot利用@Async注解实现异步调用

    前言:异步编程是让程序并发运行的一种手段,使用异步编程可以大大提高我们程序的吞吐量,减少用户的等待时间.在Java并发编程中实现异步功能,一般是需要使用线程或者线程池.而实现一个线程,要么继承Thre ...

  7. 五分钟搞定!Linux平台上用Ansible自动化部署SQL Server AlwaysOn集群

    五分钟搞定!Linux平台上用Ansible自动化部署SQL Server AlwaysOn集群 前言 以下内容是由红帽官方博客整理而成,使用Ansible在Linux平台上自动化部署SQL Serv ...

  8. oh-my-bash在git大仓库下的卡顿问题解决方案

    使用oh-my-bash的同学都知道,在cd进入一些git大仓库的时候,oh-my-bash会贴心的帮你扫描一遍 然后你就卡那(nei)了... (风中凌乱.jpg) 本文告诉大家一种关闭git扫描的 ...

  9. BUUCTF-Web方向16-20wp

    [极客大挑战 2019]PHP 由内容提示应该存在源码备份,常见的如下,一个个尝试 后缀:tar tar.gz zip rar 名字:www web website backup back wwwro ...

  10. JUC并发—9.并发安全集合二

    大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5. ...