我正在一个环境中构建一个卡夫卡流应用程序,该应用程序不允许具有创建内部主题的管理员权限。我可以通过让我的操作具有可预测的名称并提前创建它们来绕过这个限制(尽管我需要小心确保它们配置正确)。
在我的应用程序的拓扑中,我有一些状态、几个
selectKey
操作和一个 leftJoin
。我已经弄清楚如何在来自 Named.as()
的重新分区操作中使用 selectKey
并为状态定义变更日志主题名称非常简单,但是我在处理来自 的内部主题时遇到了一些麻烦leftJoin
。当我使用 kafka sidecar 在本地运行我的应用程序(我确实具有管理员权限)时,我可以看到如下主题:
my-application-id-KSTREAM-JOINTHIS-0000000014-store-changelog
my-application-id-KSTREAM-OUTEROTHER-0000000015-store-changelog
我理解为什么这些主题存在,但我的问题是:除了
my-application-id
前缀之外,我对这些主题的命名有任何控制权吗?是否有 API 或钩子可以用来控制主题名称的内部部分?
(这是一个 KStream <-> KStream
leftJoin
如果这有区别的话。)
KStream-KStream 连接接受
StreamJoined
参数,允许您设置名称。在 Apache Kafka 2.4 版本中添加(参见 https://cwiki.apache.org/confluence/display/KAFKA/KIP-479%3A+Add+StreamJoined+config+object+to+Join)