我想将MirrorMaker作为独立连接器运行。
到目前为止,我还没有找到有关该配置的任何文档。
据我所料,以下内容将复制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
答案 0 :(得分:1)
因此Kafka Mirror Maker源代码具有不错的readme.md。
如何配置它取决于直接运行MM2还是在Kafka Connect中运行。您直接说了,位于链接的readme.md中。
基本上:
默认情况下,复制的主题根据“源集群”进行重命名 别名”:
topic-1-> source.topic-1
这可以通过覆盖Replication.policy.separator进行自定义 属性(默认为句点)。如果您需要更多控制方式 定义了远程主题,您可以实现自定义 ReplicationPolicy并覆盖Replication.policy.class(默认为 DefaultReplicationPolicy)。
不幸的是,这意味着您不能仅通过配置代码来重命名主题。 (DefaultReplicationPolicy类仅允许您指定分隔符,而不能指定其他任何内容)。这可能是因为当您指定要镜像的主题时,您使用的是正则表达式,而不是单个主题名称(即使您的源集群主题config属性只是该主题的名称-它仍被视为正则表达式)。 / p>
因此,回到文档:ReplicationPolicy
是Kafka connect源代码中的Java接口,因此您需要实现一个实现ReplicationPolicy
的自定义Java类,然后确保它位于运行MM2时的类路径。
让我们假设您确实编写了这样的类,并将其称为com.moffatt.kafka.connect.mirror.FooReplicationPolicy
。对于您的类而言,一个很好的模板是Kafka Connect随附的默认(显然)复制策略类:DefaultReplicationPolicy
。您会看到自己构建自己并不困难。您可以轻松地添加一个地图(无论是硬编码的还是配置的),以查找特定的已配置主题名称并将其映射到目标主题名称。
通过在配置中将新类指定为以下内容来使用新类:
replication.policy.class = com.moffatt.kafka.connect.mirror.FooReplicationPolicy