全部产品
Search
文档中心

云消息队列 RocketMQ 版:基本概念

更新时间:Jul 09, 2026

本文介绍云消息队列 RocketMQ 版的基本概念,以便您更好地理解和使用云消息队列 RocketMQ 版

  • 主题(Topic)

    • 云消息队列 RocketMQ 版中消息传输和存储的顶层容器,用于标识同一类业务逻辑的消息。主题通过TopicName来做唯一标识和区分。更多信息,请参见主题(Topic)

  • 轻量主题(LiteTopic)

    • 当主题类型为Lite类型时,主题下可创建轻量主题(LiteTopic),由Topic和LiteTopic共同唯一确认消息的存储容器。每个存储容器默认由一个队列组成。更多信息,请参见轻量主题模型

  • 消息类型(MessageType)

    • 云消息队列 RocketMQ 版中按照消息传输特性的不同而定义的分类,用于类型管理和安全校验。云消息队列 RocketMQ 版支持的消息类型有普通消息、顺序消息、事务消息和定时/延时消息。

  • 消息队列(MessageQueue)

    • 队列是云消息队列 RocketMQ 版中消息存储和传输的实际容器,也是消息的最小存储单元。云消息队列 RocketMQ 版的所有主题都是由多个队列组成,以此实现队列数量的水平拆分和队列内部的流式存储。队列通过QueueId来做唯一标识和区分。更多信息,请参见队列(MessageQueue)

  • 消息(Message)

    • 消息是云消息队列 RocketMQ 版中的最小数据传输单元。生产者将业务数据的负载和拓展属性包装成消息发送到云消息队列 RocketMQ 版服务端,服务端按照相关语义将消息投递到消费端进行消费。更多信息,请参见消息(Message)

      每条消息都拥有全局唯一的消息 ID(MessageID),不同主题(Topic)之间也不会重复。需注意,在网络波动或消费失败重试等场景下,同一条消息可能被多次投递(即重复投递);建议业务端通过消息索引 Key(MessageKey)实现幂等性处理(消息去重),而非依赖 Message ID 的唯一性去重。

      此外,云消息队列 RocketMQ 版服务端不会对客户端发送的消息内容做任何修改,包括字段大小写、格式转换等;消息体(Message Body)中的数据始终保持发送时的原始状态。

  • 消息视图(MessageView)

    • 消息视图是云消息队列 RocketMQ 版面向开发视角提供的一种消息只读接口。通过消息视图可以读取消息内部的多个属性和负载信息,但是不能对消息本身做任何修改。

  • 消息标签(MessageTag)

    • 消息标签是云消息队列 RocketMQ 版提供的细粒度消息分类属性,可以在主题层级之下做消息类型的细分。消费者通过订阅特定的标签来实现细粒度过滤。更多信息,请参见消息过滤

  • 消息位点(MessageQueueOffset)

    • 消息是按到达云消息队列 RocketMQ 版服务端的先后顺序存储在指定主题的多个队列中,每条消息在队列中都有一个唯一的Long类型坐标,这个坐标被定义为消息位点。更多信息,请参见消费进度管理

  • 消费位点(ConsumerOffset)

    • 一条消息被某个消费者消费完成后不会立即从队列中删除,云消息队列 RocketMQ 版会基于每个消费者分组记录消费过的最新一条消息的位点,即消费位点。更多信息,请参见消费进度管理

  • 消息索引(MessageKey)

    • 消息索引是云消息队列 RocketMQ 版提供的面向消息的索引属性。通过设置的消息索引可以快速查找到对应的消息内容。

  • 生产者(Producer)

    • 生产者是云消息队列 RocketMQ 版系统中用来构建并传输消息到服务端的运行实体。生产者通常被集成在业务系统中,将业务消息按照要求封装成云消息队列 RocketMQ 版的消息并发送至服务端。更多信息,请参见生产者(Producer)

  • 事务检查器(TransactionChecker)

    • 云消息队列 RocketMQ 版中生产者用来执行本地事务检查和异常事务恢复的监听器。事务检查器应该通过业务侧数据的状态来检查和判断事务消息的状态。更多信息,请参见事务消息

  • 事务状态(TransactionResolution)

    • 云消息队列 RocketMQ 版中事务消息发送过程中,事务提交的状态标识,服务端通过事务状态控制事务消息是否应该提交和投递。事务状态包括事务提交、事务回滚和事务未决。更多信息,请参见事务消息

  • 消费者分组(ConsumerGroup)

    • 消费者分组是云消息队列 RocketMQ 版系统中承载多个消费行为一致的消费者的负载均衡分组。和消费者不同,消费者分组并不是运行实体,而是一个逻辑资源。在云消息队列 RocketMQ 版中,通过消费者分组内初始化多个消费者实现消费性能的水平扩展以及高可用容灾。更多信息,请参见消费者分组(ConsumerGroup)

  • 消费者(Consumer)

    • 消费者是云消息队列 RocketMQ 版中用来接收并处理消息的运行实体。消费者通常被集成在业务系统中,从云消息队列 RocketMQ 版服务端获取消息,并将消息转化成业务可理解的信息,供业务逻辑处理。更多信息,请参见消费者(Consumer)

      消息的推送方式取决于消费模式:

      • 集群消费(Clustering):消息按队列(MessageQueue)分配给不同的消费者实例,同一队列内的消息串行投递,不同队列的消息可并发推送。

      • 广播消费(Broadcasting):每条消息会被推送给消费者分组内的所有消费者实例。

      • 顺序消息场景下:同一队列内严格保证顺序投递,前一条消息处理完成后才会投递下一条。

  • 消费结果(ConsumeResult)

    • 云消息队列 RocketMQ 版中PushConsumer消费监听器处理消息完成后返回的处理结果,用来标识本次消息是否正确处理。消费结果包含消费成功和消费失败。

  • 订阅关系(Subscription)

    • 订阅关系是云消息队列 RocketMQ 版系统中消费者获取消息、处理消息的规则和状态配置。订阅关系由消费者分组动态注册到服务端系统,并在后续的消息传输中按照订阅关系定义的过滤规则进行消息匹配和消费进度维护。更多信息,请参见订阅关系(Subscription)

  • 消息过滤

    • 消费者可以通过订阅指定消息标签(Tag)对消息进行过滤,确保最终只接收被过滤后的消息合集。过滤规则的计算和匹配在云消息队列 RocketMQ 版的服务端完成。更多信息,请参见消息过滤

  • 重置消费位点

    • 以时间轴为坐标,在消息持久化存储的时间范围内,重新设置消费者分组对已订阅主题的消费进度,设置完成后消费者将接收设定时间点之后,由生产者发送到云消息队列 RocketMQ 版服务端的消息。更多信息,请参见重置消费位点

  • 消息轨迹

    • 在一条消息从生产者发出到消费者接收并处理过程中,由各个相关节点的时间、地点等数据汇聚而成的完整链路信息。通过消息轨迹,您能清晰定位消息从生产者发出,经由云消息队列 RocketMQ 版服务端,投递给消费者的完整链路,方便定位排查问题。

  • 消息堆积

    • 生产者已经将消息发送到云消息队列 RocketMQ 版的服务端,但由于消费者的消费能力有限,未能在短时间内将所有消息正确消费掉,此时在云消息队列 RocketMQ 版的服务端保存着未被消费的消息,该状态即消息堆积。

  • 事务消息

    • 事务消息是云消息队列 RocketMQ 版提供的一种高级消息类型,支持在分布式场景下保障消息生产和本地事务的最终一致性。

  • 定时/延时消息

    • 定时/延时消息是云消息队列 RocketMQ 版提供的一种高级消息类型,消息被发送至服务端后,在指定时间后才能被消费者消费。通过设置一定的定时时间可以实现分布式场景的延时调度触发效果。

  • 顺序消息

    • 顺序消息是云消息队列 RocketMQ 版提供的一种高级消息类型,支持消费者按照发送消息的先后顺序获取消息,从而实现业务场景中的顺序处理。

  • 轻量消息

    • 轻量消息是云消息队列 RocketMQ 版提供的一种高级消息类型,支持动态创建百万级轻量主题,并提供自动化生命周期管理、高性能订阅等能力。更多信息,请参见轻量主题模型

常见问题

Q:跨 VPC 访问 RocketMQ 时应使用内网接入点域名还是 IP 地址?

A:应使用 RocketMQ 控制台提供的 VPC 专有网络接入点域名(即带 -vpc 后缀的域名,例如 rmq-cn-ai54re6l701-vpc.cn-guangzhou.rmq.aliyuncs.com:8080)。该地址专为内网访问设计,配合 VPC 对等连接及正确的路由和 DNS 配置即可实现跨 VPC 互通。请避免使用 IP 地址——RocketMQ 接入点 IP 可能变化,直接使用 IP 地址将导致连接不稳定甚至失败。

Q:从 AWS SQS 迁移至阿里云 RocketMQ 需要注意什么?

A:从 AWS SQS 迁移至云消息队列 RocketMQ 版时,请重点关注以下事项:

  • SDK 适配:使用 gRPC SDK 接入,并将 Namespace 设置为 RocketMQ 实例 ID。

  • 网络接入:建议通过私网接入点访问,避免产生公网流量费用。

  • 消息大小:建议将消息大小控制在 4 KB 以内,以降低单次业务的收发次数,从而最大化利用每月 2000 万次的免费调用额度。

Q:下载 RocketMQ ONS 系列 .NET SDK Linux 版时报错 AccessDenied 无 OSS 权限怎么办?

A:原公开下载链接因 OSS 权限配置问题可能已无法访问。若遇到 AccessDenied 错误,请通过以下方式获取最新 SDK 下载地址:

  • 前往官方文档查看最新 SDK 下载地址。

  • 阿里云 SDK 中心搜索并下载对应版本。

请勿继续使用已失效的旧链接,建议收藏官方文档页面以获取持续更新的下载入口。

Q:Remoting 协议与 gRPC 协议在同一 ConsumerGroup 下的并发处理能力有何差异?

A:在同一 ConsumerGroup 下,两种协议的并发处理能力存在显著差异:

  • gRPC 协议(5.x):支持按 MessageGroup 将消息分配至不同线程并发消费,可有效提升消费吞吐量。该特性需使用 gRPC SDK 5.0.3 及以上版本。

  • Remoting 协议(4.x):仅支持单线程顺序消费,不支持按 MessageGroup 并行处理。

如需利用 MessageGroup 实现并发消费能力,请升级至 5.x 系列并使用 gRPC SDK。

Q:双实例并行运行时,Topic 和 Group 资源是否隔离?消息是否会错发?

A:双实例因实例 ID 不同,资源完全隔离,消息不会错发。只要客户端配置中 PropertyKeyConst.NAMESRV_ADDR 正确填写(指向对应实例的接入点地址),即使不同实例使用了相同的 Topic 名称,两套实例之间也不会相互影响。请确保每个客户端的接入点配置与目标实例严格对应,以避免因配置错误导致的消息路由异常。

Q:TCP 和 HTTP 接入点地址是否可以混用?

A:不可混用。TCP SDK 必须配置 TCP 协议的接入点地址,HTTP SDK 必须配置 HTTP 协议的接入点地址,二者不可互换。例如,ons-client-2.0.6.Final(通常用于 TCP 协议)必须使用 TCP 协议的 Region 化接入点地址,若误配置为 HTTP 接入点地址将导致连接失败。请在控制台的实例详情页分别获取对应协议的接入点地址,确保 SDK 与接入点协议一致。