Topic(消息主题)是同一种类型消息的集合,是消息队列 Kafka版中数据写入操作的基本单元。本文档介绍创建单个 Topic 的操作步骤。
在实际业务场景中,一个 Topic 常被用作承载同一种业务流量,由开发者根据自身系统设计、数据架构设计来决定如何设计不同的 Topic。每个 Topic 可以有多个生产者向它发送消息,也可以有多个消费者去消费其中的消息。
分区(Partition)是 Topic 在物理上的分组,每个 Topic 可以划分为多个分区,每个分区都是一个有序的队列。创建 Topic 时需要指定分区数量,但是随着业务流量的增长,也可以随时增加 Topic 的分区,扩展 Topic 承载业务流量的能力。
消息队列 Kafka版通过自动创建 Topic 的功能控制 Kafka 实例支持的 Topic 创建方式,该功能默认为关闭状态。
说明
每个规格的实例均提供一定额度的分区数量范围与免费分区数,如果免费分区额度已用完,则必须购买分区后才能继续创建 Topic 或扩分区。如果分区数量已达该规格的最大额度,则只能调整分区规格、获得更大的分区额度才能继续创建 Topic 或扩分区。
已创建消息队列 Kafka版实例,且实例状态为运行中。详细操作步骤请参考创建实例。
消息队列 Kafka版支持通过控制台或 OpenAPI 的方式手动逐个创建 Topic。
说明
在顶部菜单栏中选择地域,并在左侧导航栏中单击实例列表。
找到目标实例,单击实例名称。
在页签栏中单击Topic管理。
单击创建Topic。
填写 Topic 基础配置。
参数 | 说明 |
---|---|
Topic名称 | Topic 的名称。需要符合以下命名规范:
说明 创建 Topic 之后不支持修改 Topic 名称。 |
描述 | Topic 的备注信息,可以用于简单描述 Topic 的用途、对应的业务类型等信息。 |
填写 Topic 参数配置。
参数 | 说明 |
---|---|
分区数 | 此 Topic 的分区数量。分区数量越大,消费的并发度越大。 说明
|
副本数 | 分区的副本个数,表示在对应数量的副本上备份数据,用于保障分区的高可用。当其中一个 Broker 故障时仍可保障数据可用性,副本数越大可靠性越高。 说明
|
最小同步副本数 | Topic 最小同步副本个数,即 min.insync.replicas 参数。该值越大,数据可靠性越好,但是可用性将会降低。
|
消息保留时长 | 磁盘容量充足时,消息在此 Topic 中的最大保留时长,即消息的存储时间。消费者必须在此时间结束前消费消息,否则消息将被删除。删除的消息,无法被消费。 |
最大消息大小 | 此 Topic 中单条消息的最大长度。 |
配置用户权限。
指定实例内 SASL 用户对该 Topic 的操作权限。
默认为全部允许,即全部 SASL 用户对于此 Topic 都具备读写权限,即使该用户关闭了 All Permitted 权限。您也可以选择自定义设置,为不同 SASL 用户分别指定权限类型。自定义权限包括:
说明
配置消息清理策略。
说明
Kafka 实例默认的磁盘清理水位为 90%,具体以实际为准,详情请参见设置磁盘清理水位。
注意
如果消息没有 Key,不支持启用 COMPACT 消息清理策略。
(可选)配置 Topic 标签。
单击添加标签,输入标签键和标签值,为 Topic 添加自定义标签。
标签用于云资源的标识与分类,添加标签有利于识别和管理 Topic。每次支持添加 20 个标签,标签设置规则请参见标签设置规则。
单击确定。
在Topic管理页签中可以查看已创建好的 Topic。
消息队列 Kafka版提供 OpenAPI CreateTopic,用于手动创建 Topic。
使用自动创建 Topic 的功能前,需要先在控制台开启此功能,并通过客户端 SDK 在写入消息时指定一个不存在 Topic。自动创建的 Topic 默认配置如下。
参数 | 默认配置 |
---|---|
Topic 名称 | 默认使用客户端 SDK 指定的 Topic 名称。应符合以下规范:
说明
|
描述 | 无。 |
分区数 | 开启自动创建 Topic 功能时设置的默认分区数。 |
副本数 | 开启自动创建 Topic 功能时设置的默认副本数。 |
最小同步副本数 | 默认为 1。 |
消息保留时长 | 默认沿用实例的消息保留时长。 |
最大消息大小 | 默认沿用实例的最大消息大小。 |
用户权限 | 默认此 Topic 无任何自定义权限。如果开启了 ACL,则权限为 All Permitted 的 SASL 用户才具备此 Topic 的读写权限。 |
标签 | 默认此 Topic 无任何自定义标签。如需为 Topic 设置标签,请参见管理 Topic 标签。 |
消息清理策略 | 自动创建的 Topic,消息清理策略默认为 DELETE。 |
说明
在顶部菜单栏中选择地域,并在左侧导航栏中单击实例列表。
找到目标实例,单击实例名称。
在Topic管理页签中单击设置自动创建 Topic。
开启自动创建Topic开关,并设置以下参数。
参数 | 说明 |
---|---|
ACL 用户自动授权 | 是否允许所有 ACL 用户自动创建 Topic。 |
默认分区数 | 自动创建的 Topic 的默认分区数量。 |
默认副本数 | 自动创建的 Topic 的默认分区副本数量。 |
在弹出的对话框中单击确定。
说明
对于2023年10月26日及之前创建的实例,设置默认分区数或副本数时,后端服务会自动重启实例以使配置生效。
开启自动创建 Topic 功能后,您可以在生产侧客户端 SDK 中设置一个不存在的 Topic 名称,请求向其写入消息数据。消息队列 Kafka版收到请求时会自动在对应实例中创建此 Topic。
您可以参考以下 Java 语言的示例代码在 Kafka 客户端 SDK 中为生产者实例设置消息写入的 Topic,也可以参考消息队列 Kafka版提供的示例项目,编写相关业务逻辑。
...... // 设置一个不存在的 Topic 名称,后端服务收到请求后会自动创建此 Topic private void setTopic(Properties kafkaProperties) { topic = kafkaProperties.getProperty("topic"); } ......
创建 Topic 后,您可以根据需求随时修改 Topic 的配置及用户权限,也可以查看 Topic 的详细信息。