我们有一个流处理器应用程序,它使用具有n个分区(n>1)的主题中的数据。
从一开始(没有changelog主题),dev环境总是创建一个带有n个分区的changelog主题。
在相同的场景中,在生产环境中,分区数始终等于1,然后我们手动将其更改为n,以匹配主题的分区数。
我检查了所有文档,试图为changelog设置分区数,但找不到任何方法。最后一个选项是检查changelog主题是否不存在,然后用n个分区创建它。
既然框架自动创建了该主题,那么有没有办法设置changelog的分区数,而不必手动或在代码中创建该主题?
ps:我们使用的是Kafka客户端版本2.3.1。
谢谢,
奥斯汀
2条答案
按热度按时间d5vmydt91#
我刚刚查看了源代码以了解此特性的详细信息,在撰写本文时,发现设置
change-logs
不允许使用主题。解释
这个
change-logs
主题被归类为一个内部主题,在下面的两个类中有证据表明这一点(InternalTopicConfig
以及InternalTopicManager
):internaltopicconfig类的源代码包含以下方法,该方法还表示强制执行此类内部主题上的分区数:
internaltopicmanager类源代码中的嵌入文档清楚地说明了
makeReady()
方法。正如您在注解中所看到的,如果这样的主题具有正确的分区计数,那么它将被忽略,如果分区计数不正确,那么您将看到错误,建议使用应用程序重置工具。
希望这有帮助!
pn9klfpd2#
目前,我们正在连接到支持ssl的msk主题,因此我们没有通过应用程序创建内部主题的写入权限。因此,作为一种解决方法,我们要求msk管理员手动创建具有所需名称的changelog主题,以便应用程序能够读取它。
此外,目前我们所有的用户主题都有3个分区,而创建的changelog主题也有3个分区,并具有以下更新的设置。如果您试图手动创建changelog主题(启用压缩以节省空间),这些设置将非常有用:
更改日志的配置
此外,changelog主题名称如下所示:(您的应用程序id)-(materialedas下的用户定义属性)-changelog