如何解决创建的 topic 一段段时间后会自动删除的问题?

  • 使用 brokerDeleteInactiveTopicsMode 配置删除模型,默认 InactiveTopicDeleteMode.delete_when_no_subscriptions,即没有订阅也没有 producer 的时,才会删除 topic。

  • 而 brokerDeleteInactiveTopicsEnabled 和 brokerDeleteInactivePartitionedTopicMetadataEnabled 的设置指是否清理 non-partitioned topic 或 partitioned topic 的元数据。

  • 存在一个 brokerServicePurgeInactiveFrequencyInSeconds = 60 配置,每隔 60s 检查一次不活跃的 topic。当检测到符合 brokerDeleteInactiveTopicsMode 的 topic 时,会删除该 topic。

  • 默认情况下是会删除 non-partitioned topic, 但不会删除 partitioned topic 。

    • private boolean brokerDeleteInactiveTopicsEnabled = true;
    • private boolean brokerDeleteInactivePartitionedTopicMetadataEnabled = false;
  • 因此,修改 brokerDeleteInactiveTopicsEnabled 为 false,创建的 topic 在一段时间后不会自动删除,但不能够知道对方修改完配置后是否有重启 broker。