将消息从一个Kafka主题复制到另一个kafka主题

时间:2016-05-09 14:14:11

标签: apache-kafka

我想从thr prod集群中的Kafka集群/主题流入dev环境中的另一个Kafka集群,以进行可伸缩性和regrrssion测试。

对于鸭子磁带解决方案,我级联了一个Kafka消费者和制作人,但我的直觉告诉我应该有更好的方法。但是,我还没有找到任何好的解决方案。任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:12)

如果要将数据从一个群集复制到另一个群集,则有一个名为MirrorMaker的kafka工具。

  

Kafka附带了一个用于在Kafka集群之间镜像数据的工具。该工具从源群集读取并写入目标群集。将从源群集中的主题读取数据,并将其写入目标群集中具有相同名称的主题。

以下是运行MirrorMaker工具的语法:

bin/kafka-run-class.sh kafka.tools.MirrorMaker
       --consumer.config consumer.properties
       --producer.config producer.properties --whitelist my-topic

您可以在kafka安装目录中找到此脚本。在这里,您需要提供consumer.properties的{​​{1}}和source cluster producer.properties。您可以通过destination cluster选项将哪些主题镜像到白名单。

您可以找到有关Mirroring data between clusters

的更多信息

注意: MirrorMaker将数据复制到--whitelist topic_namedestination cluster的{​​{1}}

答案 1 :(得分:3)

虽然mirror使之适用于整个群集解决方案,但是,对于同一个群集,ducktap解决方案也不错,因为MirrorMaker假定您将一个群集拉到另一个群集。

因此,您只需在同一集群中不同主题之间复制数据的解决方案,kafkacat是您的朋友。

Warning message:
In sub[[11]][sub$domain == "Eukaryota"] <- sub[[11]] * Q18S$q[1] :
  number of items to replace is not a multiple of replacement length

答案 2 :(得分:0)

Kafka基本上是一个消息传递队列,因此它具有被动行为:必须将消息放入producer),并且必须从<<>中提取消息 / strong> it(consumer)。

如果你想在两个kafka主题之间建立一种管道,那么来自一个主题的消息将自动转到另一个主题,你需要一些具有第一个主题的消费者属性的代码和一个制作人到第二个主题。

根据您的编程语言,您可以选择一些准备充分的文档生产者和/或消费者解决方案。

对于更复杂的案例,您可以查看 Apache Storm

答案 3 :(得分:0)

如果您需要将消息从一个主题复制到另一个主题(可能需要一些其他逻辑或转换),则也可以使用 Kafka流

https://docs.confluent.io/current/streams/index.html

和示例

https://github.com/confluentinc/kafka-streams-examples/blob/5.4.0-post/src/main/java/io/confluent/examples/streams/WordCountLambdaExample.java

或者,选中MirrorMaker