Topic是云消息队列 RocketMQ 版对消息的一级归类。云消息队列 RocketMQ 版支持发布和订阅模型,通过Topic完成消息的发布和订阅。消息生产者将消息发送到Topic中,而消息消费者则通过订阅该Topic来消费消息。本文介绍如何在云消息队列 RocketMQ 版控制台上创建、删除、更新和查询Topic。
注意事项
-
Topic不能跨实例使用,例如在实例A中创建的Topic A不能在实例B中使用。
-
Topic类型和消息类型必须一致不能混用。例如,您需要创建一个Topic用于收发普通消息,则该Topic的消息类型必须为普通消息类型,不能选择顺序消息、事务消息等,否则会导致运维事件(如节点更换,实例迁移时定时消息丢失)。
-
RocketMQ 5.x 版本中,Topic 的队列数(Queue)由系统自动分配,不支持自定义修改,目前也无法通过控制台或 API 直接查看具体队列数值。
-
云消息队列 RocketMQ 版不支持直接创建全局顺序 Topic,也不提供特殊申请通道。如需实现全局顺序效果,建议创建分区顺序 Topic,并在发送消息时为所有消息设置相同的 Sharding Key(如固定值),使消息均路由至同一分区。
-
云消息队列 RocketMQ 5.x 版出于资源管控和稳定性考虑,不支持自动创建 Topic(包括死信 Topic)。如需使用死信 Topic,需通过控制台或调用 API 显式手动创建,这与开源 RocketMQ 版本的行为有所不同。
计费说明
云消息队列 RocketMQ 版不同的计费模式,Topic的计费方式也不相同。
-
包年包月、按量计费实例
Topic数量超过实例免费配额的部分,会产生Topic费用。若未超出免费配额,则不产生费用。具体的计费规则,请参见Topic费用。
-
Serverless实例
按照Topic数量进行计费。具体的计费规则,请参见Serverless实例Topic费用。
创建Topic
登录云消息队列 RocketMQ 版控制台,在左侧导航栏单击实例列表。
在顶部菜单栏选择地域,如华东1(杭州),然后在实例列表中,单击目标实例名称。
-
在左侧导航栏,单击Topic 管理。
-
在Topic 管理页面,单击创建 Topic。
-
在创建 Topic面板中,输入Topic的名称和描述,选择该Topic的消息类型,然后单击确定。
消息类型可选择普通消息、顺序消息、定时/延时消息或事务消息。名称长度为 1~60 个字符,只能包含大小写英文、数字、短横线(-)和下划线(_)。
查看Topic列表
登录云消息队列 RocketMQ 版控制台,在左侧导航栏单击实例列表。
在顶部菜单栏选择地域,如华东1(杭州),然后在实例列表中,单击目标实例名称。
-
在左侧导航栏,单击Topic 管理。
-
在Topic 管理页面,可以查看当前实例的所有Topic。
查询Topic详情
-
在Topic 管理页面,找到目标Topic,在其操作列单击详情。
-
在Topic 详情页面,可以查询Topic的详细信息。
编辑Topic
-
在Topic 管理页面,找到目标Topic,在其操作列单击详情。
-
在Topic 详情页面单击基本信息页签,然后在基础信息区域单击编辑。
-
在更新 Topic面板中输入修改后的Topic描述,并单击确定完成修改。
删除Topic
-
Topic删除后,相关的生产者、消费者将会立即停止服务,Topic元数据和Topic的消息数据也会被同时删除且不可恢复,请您谨慎执行该操作。
-
若需要再次创建同名Topic,需要等待5分钟。
-
在Topic 管理页面,找到目标Topic,在其操作列单击详情。
-
在Topic 详情页面单击基本信息页签,然后在基础信息区域单击删除 Topic。
-
在提示对话框,单击确认。
快速体验
云消息队列 RocketMQ 版支持在控制快速体验普通消息的发送。其他类型消息的收发可通过SDK进行,具体操作,请参见SDK参考概述。
-
在Topic 管理页面,找到消息类型为普通消息的目标Topic,在其操作列单击详情。
-
在Topic 详情页面,单击快速体验。
-
在快速体验的消息生产和消费面板,按需执行相应操作:
-
控制台:
输入消息内容、消息 Key和消息 Tag,然后单击确定。
-
SDK:
根据不同的SDK,查看对应的代码示例,并根据说明完成消息的发送与接收。
-
查看仪表盘
仪表盘主要展示Topic的生产相关指标以及生产者客户端相关指标。仪表盘指标详情,请参见仪表盘。
-
在Topic 管理页面,找到目标Topic,在其操作列单击详情。
-
在Topic 详情页面,单击仪表盘页签。
更多操作
Topic导入和导出,请参见Topic导入/导出。
常见问题
Q:使用阿里云 CLI 创建 Topic 时报 InternalError 或提示 MessageType 缺失怎么办?
在使用阿里云 CLI 创建 Topic 时,MessageType 参数为必填项且无默认值,不可省略。必须显式指定消息类型(如 NORMAL、FIFO、DELAY 等),否则会导致创建失败或报 InternalError 错误。请检查 CLI 命令中是否包含 --MessageType 参数,并确保指定了正确的消息类型值。
Q:调用 OnsTopicStatus 接口查询 Topic 时返回 BIZ_RESOURCE_NOT_EXISTS 报错怎么办?
该报错表示传入的实例 ID 下不存在目标 Topic。请按以下步骤排查:
-
核对调用接口时使用的实例 ID 和 Topic 名称是否正确。
-
确认目标 Topic 已在指定实例中创建并处于正常状态。
-
注意 Topic 不能跨实例使用,请确保查询所用的实例 ID 与创建 Topic 时使用的实例 ID 一致。
Q:如何查询 RocketMQ Topic 被删除的操作记录及操作者?
可通过阿里云操作审计(ActionTrail)控制台查询 Topic 删除记录:
-
登录操作审计(ActionTrail)控制台。
-
在事件查询页面,搜索事件名称
OnsTopicDelete(通过 API 删除)或ConsoleTopicDelete(通过控制台删除),并筛选对应地域。 -
查看操作记录及操作者账号信息。
操作审计日志最长保留 90 天,超出该期限的操作记录无法查询。
Q:同一 FIFO 主题在多个项目中存在生产者,导致消息类型不匹配报错怎么办?
该错误与多项目共存无关,根本原因是 Topic 配置的消息类型为 FIFO(顺序消息),但客户端发送时使用了普通消息(NORMAL)的接口或属性,导致消息类型不一致。请按以下步骤排查:
-
检查代码中消息的定义,确认使用了 FIFO 消息专用的发送接口(而非普通消息接口)。
-
确认消息属性符合 FIFO 要求,例如正确设置了消息分组(MessageGroup)。
-
确保所有生产者代码中消息的发送方式与 Topic 配置的消息类型(FIFO)保持一致。
相关文档
Topic的相关操作也可以通过调用API完成: