- Topic:
消息主题,⼀级消息类型,⽣产者向其发送消息。通过 Topic 对消息进⾏分类。
- ⽣产者:
也称为消息发布者,负责⽣产并发送消息⾄ Topic。
- 消费者:
也称为消息订阅者,负责从 Topic 接收并消费消息。
- 消息(Message):
⽣产者向 Topic 发送并最终传送给消费者的数据和(可选)属性的组合。消息队列中信息传递的载体
- 消息属性:
⽣产者可以为消息定义的属性,包含 Message Key 和 Tag。
- Group:
⼀类⽣产者或消费者,这类⽣产者或消费者通常⽣产或消费同⼀类消息,且消息发布或 订阅的逻辑⼀致。
- Message ID
消息的全局唯⼀标识,由消息队列 RocketMQ 版系统⾃动⽣成,唯⼀标识某条消 息。
- Message Key
消息的业务标识,由消息⽣产者(Producer)设置,唯⼀标识某个业务逻辑。
- Tag
消息标签,⼆级消息类型,⽤来进⼀步区分某个 Topic 下的消息分类。
- Producer
消息⽣产者,也称为消息发布者,负责⽣产并发送消息。
- Producer 实例
Producer 的⼀个对象实例,不同的 Producer 实例可以运⾏在不同进程内或者不 同机器上。Producer 实例线程安全,可在同⼀进程内多线程之间共享。
- Consumer
消息消费者,也称为消息订阅者,负责接收并消费消息。
- Consumer 实 例
Consumer 的⼀个对象实例,不同的 Consumer 实例可以运⾏在不同进程内或者 不同机器上。⼀个 Consumer 实例内配置线程池消费消息。
- Group
⼀类 Producer 或 Consumer,这类 Producer 或 Consumer 通常⽣产或消费同 ⼀类消息,且消息发布或订阅的逻辑⼀致。
- Group ID
Group 的标识。
- 队列
每个 Topic 下会由⼀到多个队列来存储消息。每个 Topic 对应队列数与消息类型以 及实例所处地域(Region)相关,具体的队列数可提交⼯单咨询。
- Exactly-Once
投递语义是指发送到消息系统的消息只能被 Consumer 处理 且仅处理⼀次,即使 Consumer 重试消息发送导致某消息重复投递,该消息在 Consumer 也只被消费⼀次。
- 集群消费
⼀个 Group ID 所标识的所有 Consumer 平均分摊消费消息。例如某个 Topic 有 9 条消息,⼀个 Group ID 有 3 个 Consumer 实例,那么在集群消费模式下每个实 例平均分摊,只消费其中的 3 条消息。
- ⼴播消费
⼀个 Group ID 所标识的所有 Consumer 都会各⾃消费某条消息⼀次。例如某个 Topic 有 9 条消息,⼀个 Group ID 有 3 个 Consumer 实例,那么在⼴播消费模 式下每个实例都会各⾃消费 9 条消息。
- 定时消息
Producer 将消息发送到消息队列 RocketMQ 版服务端,但并不期望这条消息⽴⻢ 投递,而是推迟到在当前时间点之后的某⼀个时间投递到 Consumer 进⾏消费,该 消息即定时消息。
- 延时消息
Producer 将消息发送到消息队列 RocketMQ 版服务端,但并不期望这条消息⽴⻢ 投递,而是延迟⼀定时间后才投递到 Consumer 进⾏消费,该消息即延时消息。
- 事务消息
消息队列 RocketMQ 版提供类似 X/Open XA 的分布事务功能,通过消息队列 RocketMQ 版的事务消息能达到分布式事务的最终⼀致。
- 顺序消息
消息队列 RocketMQ 版提供的⼀种按照顺序进⾏发布和消费的消息类型,分为全局 顺序消息和分区顺序消息。
- 全局顺序消息
对于指定的⼀个 Topic,所有消息按照严格的先⼊先出(FIFO)的顺序进⾏发布和 消费。
- 分区顺序消息
对于指定的⼀个 Topic,所有消息根据 Sharding Key 进⾏区块分区。同⼀个分区 内的消息按照严格的 FIFO 顺序进⾏发布和消费。
- Sharding Key
是顺序消息中⽤来 区分不同分区的关键字段,和普通消息的 Message Key 是完全不同的概念。
- 消息堆积
Producer 已经将消息发送到消息队列 RocketMQ 版的服务端,但由于 Consumer 消费能⼒有限,未能在短时间内将所有消息正确消费掉,此时在消息队 列 RocketMQ 版的服务端保存着未被消费的消息,该状态即消息堆积。
- 消息过滤
Consumer 可以根据消息标签(Tag)对消息进⾏过滤,确保 Consumer 最终只 接收被过滤后的消息类型。消息过滤在消息队列 RocketMQ 版的服务端完成。
- 消息轨迹
在⼀条消息从 Producer 发出到 Consumer 消费处理过程中,由各个相关节点的 时间、地点等数据汇聚而成的完整链路信息。通过消息轨迹,您能清晰定位消息从 Producer 发出,经由消息队列 RocketMQ 版服务端,投递给 Consumer 的完整 链路,⽅便定位排查问题。
- 重置消费位点
以时间轴为坐标,在消息持久化存储的时间范围内(默认 3 天),重新设置 Consumer 对已订阅的 Topic 的消费进度,设置完成后 Consumer 将接收设定 时间点之后由 Producer 发送到消息队列 RocketMQ 版服务端的消息。
- 死信队列
死信队列⽤于处理⽆法被正常消费的消息。,即死信消息。当⼀条消息初次消费失败,消息队 列 RocketMQ 版会⾃动进⾏;达到最⼤重试次数后,若消费依然失 败,则表明 Consumer 在正常情况下⽆法正确地消费该消息。此时,消息队列 RocketMQ 版不会⽴刻将消息丢弃,而是将这条消息发送到该 Consumer 对应的 特殊队列中。 消息队列 RocketMQ 版将这种正常情况下⽆法被消费的消息称为死信消息(DeadLetter Message),将存储死信消息的特殊队列称为死信队列(Dead-Letter Queue)。死信消息具有以下特性: •不会再被消费者正常消费。 •有效期与正常消息相同,均为 3 天,3 天后会被⾃动删除。因此,请在死信消息产⽣后的 3 天内 及时处理。
死信队列具有以下特性:
•⼀个死信队列对应⼀个 Group ID, 而不是对应单个消费者实例。
•如果⼀个 Group ID 未产⽣死信消息,消息队列 RocketMQ 版不会为其创建相应的死信队列。
•⼀个死信队列包含了对应 Group ID 产⽣的所有死信消息,不论该消息属于哪个 Topic。 消息队列 RocketMQ 版控制台提供对死信消息的查询、导出和重发的功能。
重新发送死信消息
⼀条消息进⼊死信队列,意味着某些因素导致消费者⽆法正常消费该消息,因此,通常需要您对其 进⾏特殊处理。排查可疑因素并解决问题后,您可以在消息队列 RocketMQ 版控制台重新发送该 消息,让消费者重新消费⼀次。
注意: 死信消息被重新发送后,不会在死信队列中被⽴即删除。
单条重发 在消息队列 RocketMQ 版控制台按任意⽅式查询到死信消息后,在某条死信消息的操作列,单 击重新发送,重发该条死信消息。 •批量重发 在消息队列 RocketMQ 版控制台按 Group ID 查询到死信消息后,勾选⽬标死信消息,然后单 击⻚⾯下⽅的批量重发按钮,重新发送所有勾选的死信消息。
- 消息路由 消息路由常⽤于不同地域之间的消息同步,保证地域之间的数据⼀致性。消息队列 RocketMQ 版的全球消息路由功能依托阿⾥云优质基础设施实现的⾼速通道专 线,可以⾼效地实现国内外不同地域之间的消息同步复制