本文列举了 TDMQ RocketMQ 版中常见的概念与定义。
广播消费(Broadcasting Consumption)
当使用广播消费模式时,每条消息会被推送给集群内所有注册过的消费者,保证消息至少被每个消费者消费一次。适用于每条消息需要被集群下每一个消费者处理的场景。
集群(Cluster)
集群是 TDMQ RocketMQ 版中的一个资源维度,不同集群的 Topic、Group 等资源完全隔离。每个集群会有集群的资源限制例如 Topic 总数、消息保留时长等
集群消费(Clustering Consumption)
当使用集群消费模式时,任意一条消息只需要被集群内的任意一个消费者处理即可。适用于每条消息只需要被处理一次的场景。
消费者(Consumer)
消费者是 RocketMQ 中用来接收并处理消息的运行实体。消费者通常被集成在业务系统中,从服务端获取消息,并将消息转化成业务可理解的信息,供业务逻辑处理。
消费位点(ConsumerOffset)
一条消息被某个消费者消费完成后不会立即从队列中删除, RocketMQ 会基于每个消费者分组记录消费过的最新一条消息的位点,即消费位点。
死信队列(Dead-Letter Queue)
死信队列是一种特殊的消息队列,用于集中处理无法被正常消费的消息的队列。当消息在重试队列中达到一定重试次数后仍未能被正常消费,TDMQ 会判定这条消息在当前情况下无法被消费,将其投递至死信队列。
实际场景中,消息可能会由于持续一段时间的服务宕机,网络断连而无法被消费。这种场景下,消息不会被立刻丢弃,死信队列会对这种消息进行较为长期的持久化,用户可以在找到对应解决方案后,创建消费者订阅死信队列来完成对当时无法处理消息的处理。
消息过滤(Message Filtering)
消费者可以通过订阅指定消息标签(Tag)对消息进行过滤,确保最终只接收被过滤后的消息合集。过滤规则的计算和匹配在 RocketMQ 的服务端完成。
分组(Group)
可分为生产者组和消费者组:
生产者组:同一类 Producer 的集合,这类 Producer 发送同一类消息且发送逻辑一致。如果发送的是事务消息,且生产者发送后崩溃,则 Broker 服务器会联系同一个生产者组的其他生产者实例以提交或者回溯消费。
消费者组:同一类 Consumer 的集合,这类 Consumer 通常消费同一类消息且消费逻辑一致。消费者组使得在消息消费方面实现了负载均衡和容错。消费者组的消费者实例必须订阅完全相同的 Topic。
消息索引(MessageKey)
消息索引是 RocketMQ 提供的面向消息的索引属性。通过设置的消息索引可以快速查找到对应的消息内容。
消息(Message)
消息系统所传输信息的物理载体,生产和消费数据的最小单位。生产者将业务数据的负载和拓展属性包装成消息发送到服务端,服务端按照相关语义将消息投递到消费端进行消费。
消息堆积(Message Backlog)
生产者已经将消息发送到 RocketMQ 的服务端,但由于消费者的消费能力有限,未能在短时间内将所有消息正确消费掉,此时在服务端保存着未被消费的消息,该状态即消息堆积。一分钟统计一次,如果消息已经过了保留时间(默认3天),那么这部分消息是不会再计算在堆积里面了(因为服务端已经进行了删除)。
消息队列(MessageQueue)
存储消息的物理实体,一个 Topic 可以包含多个 Queue,Queue 也叫消息分区,一个 Queue 中的消息只能被一个消费者组中的一个消费者消费,一个 Queue 中的消息不允许同一个消费者组中的多个消费者同时消费。
消息位点(MessageQueueOffset)
消息是按到达 RocketMQ 服务端的先后顺序存储在指定主题的多个队列中,每条消息在队列中都有一个唯一的 Long 类型坐标,这个坐标被定义为消息位点。
消息保留策略(Message Retention Policy)
定义了消息在 RocketMQ 服务端的持久化时间,超过保留时间的消息将被自动清理。
消息标签(MessageTag)
为消息设置的标签,用于同一个 Topic 下区分不同类型的消息,可以理解为 Topic 是消息的一级分类,Tag 是消息的二级分类。
消息轨迹(Message Trace)
在一条消息从生产者发出到消费者接收并处理过程中,由各个相关节点的时间、地点等数据汇聚而成的完整链路信息。通过消息轨迹,您能清晰定位消息从生产者发出,经由 RocketMQ 服务端,投递给消费者的完整链路,方便定位排查问题。
消息类型(MessageType)
按照消息传输特性的不同而定义的分类,用于类型管理和安全校验。RocketMQ 支持的消息类型有普通消息、顺序消息、事务消息和定时/延时消息。
消息查询(Message Query)
腾讯云 TDMQ RocketMQ 版控制台和 SDK 提供了强大的消息查询功能,支持通过 Message ID、Message Key 或时间范围来查询消息,对于业务排查和问题定位至关重要。
命名空间(Namespace)
用于对消息主题(Topic)、资源分组等进行逻辑隔离的单元。在腾讯云 TDMQ RocketMQ 版中,命名空间是资源管理和权限控制的重要边界。
普通消息(Normal Message)
普通消息是一种基础的消息类型,由生产者投递到指定 Topic 后,被订阅了该 Topic 的消费者所消费。普通消息的 Topic 中无顺序的概念,可以使用多个分区数来提升消息的生产和消费效率,在吞吐量巨大时其性能最好。
顺序消息(Ordered Message)
顺序消息是消息队列 RocketMQ 提供的一种高级消息类型,对于一个指定的Topic,消息严格按照先进先出(FIFO)的原则进行消息发布和消费,即先发送的消息先消费,后发送的消息后消费。
生产者(Producer)
生产者是 RocketMQ 系统中用来构建并传输消息到服务端的运行实体。生产者通常被集成在业务系统中,将业务消息按照要求封装成消息并发送至服务端。
重试队列(Retry Queue)
重试队列是一种为了确保消息被正常消费而设计的队列。当某些消息第一次被消费者消费后,没有得到正常的回应,则会进入重试队列,当重试达到一定次数后,停止重试,投递到死信队列中。
由于实际场景中,可能会存在的一些临时短暂的问题(如网络抖动,服务重启等)导致消息无法及时被处理,但短暂时间过后又恢复正常。这种场景下,重试队列的重试机制就可以很好解决此类问题。
重置消费位点(Reset Consumer Offset)
以时间轴为坐标,在消息持久化存储的时间范围内,重新设置消费者分组对已订阅主题的消费进度。设置完成后消费者将接收设定时间点之后的消息。
定时/延时消息(Scheduled/Delayed Message)
生产者发送消息后,消息不会立即被消费者获取,而是会在特定的时间点(或延迟特定时间后)才会被投递给消费者。
主题(Topic)
Topic 表示一类消息的集合,每个主题包含若干消息,是 RocketMQ 进行消息订阅的基本单位。
事务消息(Transactional Message)
支持分布式事务的一种消息类型。TDMQ RocketMQ 版提供了完整的事务消息解决方案,确保分布式系统下的数据最终一致性。
VPC 网络接入(VPC Access)
指您的生产者/消费者客户端与 TDMQ RocketMQ 服务端之间的网络连接方式。建议客户端与 TDMQ 实例位于同一地域的同一 VPC 内,以获得最佳的网络性能和安全性。