Apache kafka MirrorMaker2-使用独立连接器自定义主题重命名
我想将MirrorMaker作为独立连接器运行。 到目前为止,我还没有找到任何关于配置的文档。 就我所想象的,以下内容将复制Apache kafka MirrorMaker2-使用独立连接器自定义主题重命名,apache-kafka,apache-kafka-mirrormaker,Apache Kafka,Apache Kafka Mirrormaker,我想将MirrorMaker作为独立连接器运行。 到目前为止,我还没有找到任何关于配置的文档。 就我所想象的,以下内容将复制myTopic 现在在目标集群中,我需要主题有另一个名称foo(而不是自动重命名)。 这是由MirrorSourceConnector直接支持的,还是需要其他方法 connector.class = org.apache.kafka.connect.mirror.MirrorSourceConnector tasksMax = 2 topics = myTopic sour
myTopic
现在在目标集群中,我需要主题有另一个名称foo
(而不是自动重命名)。
这是由MirrorSourceConnector
直接支持的,还是需要其他方法
connector.class = org.apache.kafka.connect.mirror.MirrorSourceConnector
tasksMax = 2
topics = myTopic
source.cluster.bootstrap.servers = sourceHost:9092
target.cluster.bootstrap.servers = sinkHost:9092
因此,源代码有一个体面的
如何配置它取决于您是直接运行MM2还是在Kafka Connect中运行。你说的直接,这是在链接
基本上:
默认情况下,复制的主题将根据“源群集”重命名
别名“:
主题-1-->源。主题-1
这可以通过覆盖replication.policy.separator进行自定义
属性(默认为句点)。如果你需要更多的控制
如果定义了远程主题,则可以实现自定义
ReplicationPolicy和override replication.policy.class(默认值为
DefaultReplicationPolicy)
不幸的是,这意味着您不能仅通过配置代码重命名主题。(DefaultReplicationPolicy类仅允许您指定分隔符,而不允许指定其他内容)。这可能是因为当您指定要镜像的主题时,您使用的是正则表达式,而不是单个主题名称(即使您的源集群主题配置属性只是主题的名称-它仍然被视为正则表达式)
那么,回到文档:是Kafka connect源代码中的一个Java接口,因此您需要实现一个自定义Java类,该类实现ReplicationPolicy
,然后在运行时确保它位于类路径上
假设您编写了这样一个类,并将其命名为com.moffatt.kafka.connect.mirror.FooReplicationPolicy
。类的一个好模板是Kafka Connect附带的默认(显然是唯一的)复制策略类:。你可以看到,建造自己的建筑不会太困难。您可以轻松添加一个映射(硬编码或配置),该映射查找特定的配置主题名称,并将其映射到目标主题名称
您可以通过在配置中指定新类来使用它:
replication.policy.class=com.moffatt.kafka.connect.mirror.foopreplicationpolicy
不确定。MirrorMaker1可以用作连接器吗?截至目前,MirrorMaker2上的文档非常糟糕。卡夫卡·苏米特2020的这段视频表明这是可能的(大约14:35):但我不知道怎么做。。。