RocketMQ概念详细之Consumer

简介: 消费者相关信息

消费者组和订阅

首先你应该关心的是不同的消费者群组可以独立的消费相同的主题,并且每个组都拥有自己的消费偏移量。
请确保相同消费者内的每个消费者订阅一样的主题。

消息监听器

串行
消费者将锁定每个消息队列以确保它被顺序消费。这会引起性能丢失,但当你关心消息顺序的实时这是很有用的。不推荐抛异常,你可以用返回ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT 替代。

并行
正如名字所说,消息者将会并行消费消息。为了好的性能推荐使用。不推荐抛异常,你可以使用返回ConsumeConcurrentlyStatus.RECONSUME_LATER 代替。

消费状态

对于MessageListenerConcurrently,你可以返回 RECONSUME_LATER 来告诉消费者,你现在不能马上消费并且想在稍后重新消费。然后你可以继续消费其他消息。
对于MessageListenerOrderly,因为你关心顺序,你不能跳过消息,但你可以返回SUSPEND_CURRENT_QUEUE_A_MOMENT 来告诉消费者等待一会。

阻塞

不建议阻塞监听器,因为它会阻塞线程池,最后使消费进程停止。

线程数量

消费者内部使用ThreadPoolExecutor来处理消费,因此你通过设置setConsumeThreadMin 或setConsumeThreadMax 可以改变它。

从哪开始消费

当创建一个新的消费者组,需要决定它是否需要消费在broker中已经存在的历史消息。
CONSUME_FROM_LAST_OFFSET 将会忽略历史消息,消费所有的之后产生的消息。
CONSUME_FROM_FIRST_OFFSET 将会消费Broker中存在的每一个消息。
CONSUME_FROM_TIMESTAMP ,消费指定时间戳之后产生的消息。

重复

很多情况下都会引起重复,例如:

  • Producer重发消息(FLUSH_SLAVE_TIMEOUT情况)
  • Consumer 关闭,一些偏移量未及时更新到Broker

如果你的应用不能容忍重复的话,你可能需要做一些额外的工作来处理。例如,你可以检查DB的唯一主键。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
7月前
|
消息中间件 中间件 数据安全/隐私保护
RabbitMQ 的核心概念
RabbitMQ 的核心概念
43 2
|
2月前
|
消息中间件 负载均衡 算法
聊聊 RocketMQ中 Topic,Queue,Consumer,Consumer Group的关系
本文详细解析了RocketMQ中Topic、Queue、Consumer及Consumer Group之间的关系。文中通过图表展示了Topic可包含多个Queue,Queue分布在不同Broker上;Consumer组内多个消费者共享消息;并深入探讨了集群消费与广播消费模式下Queue与Consumer的关系,以及Rebalancing机制在实例增减时如何确保负载均衡。理解这些关系有助于更好地掌握RocketMQ的工作原理,提升系统运维效率。
224 2
|
4月前
|
消息中间件 存储 网络协议
消息中间件RabbitMQ---概述和概念 【一】
该文章提供了对消息中间件RabbitMQ的全面概述,包括其核心概念、工作原理以及与AMQP和JMS的关系。
消息中间件RabbitMQ---概述和概念 【一】
|
5月前
|
消息中间件 RocketMQ
MetaQ/RocketMQ 原理问题之当消费集群规模较大时,处理分配不到队列的Consumer的问题如何解决
MetaQ/RocketMQ 原理问题之当消费集群规模较大时,处理分配不到队列的Consumer的问题如何解决
|
5月前
|
消息中间件 存储 索引
MetaQ/RocketMQ 原理问题之Consumer在MetaQ中工作的问题如何解决
MetaQ/RocketMQ 原理问题之Consumer在MetaQ中工作的问题如何解决
|
5月前
|
消息中间件 负载均衡 算法
【RocketMQ系列十二】RocketMQ集群核心概念之主从复制&生产者负载均衡策略&消费者负载均衡策略
【RocketMQ系列十二】RocketMQ集群核心概念之主从复制&生产者负载均衡策略&消费者负载均衡策略
142 2
|
5月前
|
消息中间件 NoSQL 关系型数据库
【RocketMQ系列十三】RocketMQ的集群核心概念之消费重试&死信队列&幂等消息的出现以及处理
【RocketMQ系列十三】RocketMQ的集群核心概念之消费重试&死信队列&幂等消息的出现以及处理
148 1
|
5月前
|
消息中间件 存储 RocketMQ
【RocketMQ系列十】RocketMQ的核心概念说明
【RocketMQ系列十】RocketMQ的核心概念说明
78 1
|
6月前
|
消息中间件 存储 中间件
【主流技术】聊一聊消息队列 RocketMQ 的基本结构与概念
2.6Broker 代理服务器(Broker)是消息中转角色,负责存储消息、转发消息。代理服务器在 RocketMQ 系统中负责接收从生产者发送来的消息并存储、同时为消费者的拉取请求作准备。代理服务器也存储消息相关的元数据,包括消费者组、消费进度偏移和主题和队列消息等。 2.7Pull Consumer 拉取式消费(Pull Consumer)是 Consumer 消费的一种类型,也是默认的类型。下游应用系统通常主动调用 Consumer 的拉消息方法从 Broke r服务器拉消息,即主动权由下游应用控制。一旦获取了批量消息,应用就会启动消费过程。
|
6月前
|
消息中间件 存储 物联网
RocketMQ基础概念
RocketMQ基础概念
62 1