在使用消息队列 for Apache Kafka 进行消息收发之前,您需要先在消息队列 for Apache Kafka 控制台上创建资源,否则将无法通过鉴权认证及使用相关的管控运维功能。这里的资源概念是指 Topic 和 Consumer Group。

步骤一:创建 Topic

消息主题(Topic)是消息队列 for Apache Kafka 里对消息进行的一级归类,比如可以创建“Topic_Trade”这一主题用来识别交易类消息。使用消息队列 for Apache Kafka 的第一步就是先为您的应用创建 Topic。

请按照以下步骤创建 Topic:

  1. 登录消息队列 for Apache Kafka 控制台。在顶部导航栏,选择地域,如华东1(杭州)

  2. 在左侧导航栏,单击 Topic管理

  3. Topic管理页面,单击创建Topic 按钮。

  4. 填写的 Topic 信息与付费模式和实例版本相关:

    • 包年包月预付费模式下的标准版实例或是按量后付费实例:

      创建Topic 页面,输入 Topic 名称,选择 Topic 所在的实例,再输入备注和分区数,然后单击创建

    • 包年包月预付费模式下的专业版实例:

      创建Topic 页面,输入 Topic 名称,选择 Topic 所在的实例,再输入备注和分区数;单击高级设置,选择存储引擎消息类型,然后单击创建

      高级设置说明如下:

      配置项 说明
      存储引擎

      目前,消息队列 for Apache Kafka 有以下两种存储引擎:

      • 云存储:底层接入阿里云云盘的多副本能力,在 Kafka 层面,每个分区只需要 1 个副本。如需 30 MB/s 峰值流量,900 GB 磁盘容量,则购买 30 MB/s 峰值流量,900 GB 磁盘容量即可。
      • Local存储:使用原生 Kafka 的 ISR 复制算法,3 副本,且 `min.insync.replicas` = 2。如需 30 MB/s 峰值流量,900 GB 磁盘容量,由于 3 副本,则需购买 90 MB/s 峰值流量,2700 GB 磁盘容量。Topic 存储类型的更多信息请参见 Topic 存储最佳实践
        注意 若需使用 Local存储,请提交工单
      cleanup.policy

      当您选择了 Local存储时,才需配置日志清理策略(cleanup.policy)。目前,消息队列 for Apache Kafka 有以下两种日志清理策略:

      • delete :默认的消息清理策略。在磁盘容量充足的情况下,保留在最长保留时间范围内的消息;在磁盘容量不足时(一般磁盘使用率超过 85% 视为不足),将提前删除旧消息,以保证服务可用性。
      • compact:使用 Kafka Log Compaction 日志清理策略。Log Compaction 清理策略保证相同 Key 的消息,最新的 value 值一定会被保留。主要适用于系统宕机后恢复状态,系统重启后重新加载缓存等场景。例如,在使用 Kafka Connect 或 Confluent Schema Registry 时,需要使用 Kafka Compact Topic 存储系统状态信息或配置信息。
        注意 Compact Topic 一般只用在某些生态组件中,比如 Kafka Connect 或 Confluent Schema Registry,其他情况的消息收发请勿为 Topic 设置该属性。具体详情请仔细阅读各生态组件的 Demo 文档
      消息类型

      目前,消息队列 for Apache Kafka 有以下两种消息类型:

      • 普通消息:默认情况下,保证相同 Key 的消息分布在同一个分区中,且分区内消息按照发送顺序存储。集群中出现机器宕机时,可能会造成消息乱序。
      • 分区顺序消息:默认情况下,保证相同 Key 的消息分布在同一个分区中,且分区内消息按照发送顺序存储。集群中出现机器宕机时,仍然保证分区内按照发送顺序存储。但是会出现部分分区发送消息失败,等到分区恢复后即可恢复正常。

完成后,您创建的 Topic 将出现在 Topic管理页面的列表中。

说明
  • Topic 也需要在应用程序所在的地域(即所部署的 ECS 的所在地域)进行创建。

  • Topic 不能跨地域使用。比如 Topic 创建在华北2(北京)这个地域,那么消息生产端和消费端也必须运行在华北2(北京)的 ECS 上。

  • 地域的详细介绍请参见 ECS 文档中的地域和可用区

步骤二:创建 Consumer Group

创建完 Topic 后,请按以下步骤创建 Consumer Group:

  1. 消息队列 for Apache Kafka 控制台的左侧导航栏,单击 Consumer Group管理

  2. Consumer Group 管理页面,单击 创建Consumer Group 按钮。

  3. 创建Consumer Group 页面,填写 Consumer Group 的名称,并选择该 Consumer Group 所在的实例,然后单击 创建

完成后,您创建的 Consumer Group 将出现在 Consumer Group管理页面的列表中。

注意 Consumer Group 和 Topic 的关系是 N:N。 同一个 Consumer Group 可以订阅多个 Topic,同一个 Topic 也可以被多个 Consumer Group 订阅。