Topic 管理

最近更新时间: 2026-06-30 15:06:00

操作场景

Topic 是 TDMQ RocketMQ 版中的核心概念。Topic 通常用来对系统生产的各类消息做一个集中的分类和管理,例如和交易的相关消息可以放在一个名为 “trade” 的 Topic 中,供其他消费者订阅。
在实际应用场景中,一个 Topic 往往代表着一个业务聚合,由开发者根据自身系统设计、数据架构设计来决定如何设计不同的 Topic。
本文档可以指导您使用 TDMQ RocketMQ 版时,利用 Topic 对消息进行分类管理。

前提条件

已创建好对应的命名空间。

操作步骤

创建 Topic

  1. 登录 RocketMQ 控制台,选择地域后,单击目标集群的 ID 进入集群基本信息页面。

  2. 单击顶部 Topic 页签,选择命名空间后,单击新建进入创建 Topic 页面。

  3. 在新建 Topic 对话框中,填写以下信息。
    5.x 集群:

    • Topic 名称:填写 Topic 名称(创建后不可修改),只能包含字母、数字、“%”、“-”及“_”,3-100 字符。
    • 类型:选择消息类型,包括:普通、顺序、延时消息和事务消息。不同消息类型的 Topic 不能混用,例如您创建的普通消息的 Topic,不能用于收发其他类型的消息。
    • 队列数:选择队列数量,最大支持16队列。多队列可以提高单 Topic 的生产消费性能,但是非顺序消息的场景下无法保证顺序性。
    • 消息保留时间:消息持久化后的保留时间,过期不论是否消费均删除。范围 1 天到 3 天。
    • 说明:填写 Topic 的说明信息,最长128字符。
      4.x 集群:
    • Topic 名称:填写 Topic 名称(创建后不可修改),3-64个字符,只能包含字母、数字、“-”及“_”
    • 类型:选择消息类型,包括:普通、顺序消息和事务消息。不同消息类型的 Topic 不能混用,例如您创建的普通消息的 Topic,不能用于收发其他类型的消息。
    • 队列数:选择队列数量,最大支持16队列。多队列可以提高单 Topic 的生产消费性能,但是非顺序消息的场景下无法保证顺序性。
    • 说明:填写 Topic 的说明信息,最长128个字符。
  4. 单击提交,在 Topic 列表中即可看见创建好的 Topic。

    说明:

    如当前集群为单元化环境,Topic 创建后会在其他单元创建相同的 Topic 及配置。

发送测试消息

TDMQ RocketMQ 版控制台支持手动发送消息,在控制台进行相应的操作即可实现消息发送给指定的 Topic。

说明:

控制台发送测试消息的大小限制为4KB;如已超过限制,您可以使用客户端进行收发消息,最大支持 4MB。

  1. 在 Topic 列表中,单击目标Topic 操作栏的发送消息
  2. 在弹窗中输入消息 Key,消息 Tag 和消息内容,单击提交

查看 Topic 生产端连接关系

在生产环境中,生产端(Producer)与 Broker 的连接状态直接影响消息发送的稳定性和性能。通过监控连接关系(如客户端 IP、版本、消息发送时间等),可以快速识别网络异常或者资源瓶颈,确保消息高效可靠投递。

说明:

4.x 集群不支持查看生产者信息。

  1. 在 Topic 列表中,单击目标 Topic 的名称。
  2. 页面跳转到 Group 列表,选择生产者管理页签,查看当前 Topic 下生产者的相关信息。
    参数名称 含义与说明
    生产者 ID 生产者实例的唯一标识符,通常由客户端在启动时自动生成,用于在 Broker 端区分不同的连接。
    生产者地址 生产者客户端所在服务器的 IP 地址和端口,是定位生产者源机器的关键信息。
    最近发送时间 该生产者最后一次向此 Topic 发送消息的时间戳,反映了生产者的活跃程度,如果时间与当前时间差距很大,说明该生产者可能已停止工作。
    客户端类型 标识生产者是生产者(Producer) 还是 回馈生产者(Reply Producer) 等类型。
    客户端语言 开发生产端所使用的编程语言,例如 Java、Go、C++、Python 等。
    客户端版本 生产端所使用的 RocketMQ 客户端库的版本号。用于判断客户端是否过旧,或在出现 Bug 时确认是否属于特定版本的问题。
    注意:
    请避免使用存在已知风险的客户端版本,详见客户端风险说明和更新指南

查看 Topic 订阅关系

通过查看 Topic 的订阅 Group,您可以了解订阅了该 Topic 的所有 Group 的订阅状态,包括 Group 列表、在线状态及消息堆积情况等。通过这些信息,您可以确认消息是否被正常消费、及时发现无 Group 订阅的异常 Topic,并评估业务变更的影响范围。

  1. 在 Topic 列表中,单击目标 Topic 的订阅 Group 数栏下的数字。
  2. 页面跳转到 Group 列表,展示订阅该 Topic 的 Group 信息。
    参数名称 含义与说明
    Group 名称 消费者组(Consumer Group)的唯一标识。组内所有消费者共同消费同一个 Topic 的消息,实现负载均衡。
    状态 消费者组的当前状态,通常为在线离线,离线状态表示该组内没有任何运行的消费者实例。
    消费模式 分为集群消费广播消费
    - 集群消费:一条消息只会被组内的一个消费者消费。
    - 广播消费:一条消息会被组内的每一个消费者消费一次。
    协议类型 (仅 4.x 集群展示)消费者使用的通信协议,如 TCP 和 HTTP 等,决定了客户端与 Broker 的交互方式。
    过滤类型 消息过滤的方式。主要为 TAGSQL92
    - TAG:通过消息的标签进行简单匹配。
    - SQL92:通过自定义的 SQL 表达式对消息属性进行复杂过滤。
    过滤规则 具体执行的过滤条件。例如在 TAG 模式下可能是TagA,在 SQL92 模式下可能是 a > 5
    消息堆积数量 该消费者组尚未消费的消息总量,是衡量消费健康度的关键指标,堆积持续增长意味着消费速度跟不上生产速度。
    消费进度更新时间 该消费者组的消费进度(offset)最后一次被提交到 Broker 的时间,反映了消费端的活跃度,长时间未更新可能意味着消费者已僵死或停止。
    操作 如果当前 Topic 下的 Group 处于离线状态(即没有在线客户端),则可以在操作列单击取消订阅以清理历史订阅关系数据,避免历史脏数据的影响。

编辑 Topic

Topic 创建完成后,您可根据业务需求修改 Topic 配置,例如调整队列数、Topic 说明等参数,以优化消息生产消费性能。

  1. 在 Topic 列表中,找到需要编辑的 Topic ,单击操作栏中的编辑
  2. 在弹出的对话框中可以对 Topic 信息进行编辑。
  3. 单击提交即完成对 Topic 的编辑。

删除 Topic

  • 批量删除:在 Topic 列表中,勾选所有需要删除的 Topic,单击左上角的批量删除,在弹出的提示框中,单击提交,完成删除。
  • 单个删除:在 Topic 列表中,找到需要删除的 Topic,单击操作列的删除,在弹出的提示框中,单击提交,完成删除。

    注意:

    删除了 Topic 之后也会清除该 Topic 下积累的未消费消息,请谨慎执行。

导入和导出元数据

TDMQ RocketMQ 版支持在控制台上批量导入和导出 Topic 元数据,以简化 Topic 在多环境间的迁移、备份与批量配置。

  • **元数据导出:**通过 Topic 列表页右上角的按钮直接导出元数据,元数据的导出格式为 .xlsx 的表格文件。
  • **元数据导入:**如果您需要将一个集群的 Topic 信息载入到另一个集群内,在导出元数据后,可以单击 Topic 列表页右上角的按钮,将 Topic 数据导入到指定的集群内。