如何让 Java 中的 Kafka 通配符使用者更快地意识到一个新主题?



我的项目正在 Kafka 级别通过为每个租户和通配符使用者使用单独的主题来实现多租户,即发布到主题 'message.tenant1' 或 'message.tenant99' 并从主题 'message.*' 消费

在我们想要动态添加新租户(即添加"message.tenant100"主题(之前,这工作正常。通配符使用者在新主题重新启动之前不会看到它。

有没有办法让通配符使用者在不重新启动整个应用程序的情况下看到新主题?

我们正在使用Spring,但如果Spring无法获得解决方案,那么我们可以使用其他东西。

编辑:事实证明这确实有效,但有一个粗糙;y 在重新平衡发生前延迟 5 分钟。5 分钟对于我们生产中的我们来说可能太长了。我尝试将"leader.imbalance.check.interval.seconds"设置为较低的值,但这似乎没有任何效果。

如何配置或告诉 Kafka 更快地重新平衡?我希望重新平衡是一项昂贵的操作,而不是您想要经常执行的操作。

有一个消费者属性,metadata.max.age.ms可以强制使用者刷新其元数据。 默认值为 300000 或 5 分钟。 您可以将其更改为每 30 秒左右一次,以缩短识别新主题的延迟。

来自官方的Kafka文档,在New Consumer Configs

metadata.max.age.ms- 以毫秒为单位的时间段 即使我们没有看到任何分区,我们也会强制刷新元数据 领导层变动,以主动发现任何新的经纪人或 分区。

https://kafka.apache.org/documentation/#newconsumerconfigs

最新更新