使用kafka连接器在kafka主题之间复制数据

时间:2020-07-15 08:26:58

标签: apache-kafka apache-kafka-connect

我是Kafka的新手,现在我需要将数据从一个kafka主题复制到另一个主题。我想知道这样做的可能方法是什么?我想到的方法如下:

  1. Kakfa消费者+ Kafka生产者
  2. 卡夫卡流
  3. Kafka水槽连接器+生产商
  4. Kafka使用者+源连接器

我的问题是:是否可以在两者之间使用两个kafka连接器?例如。接收器连接器+源连接器。是的,请您提供一些很好的例子吗?或有关如何执行操作的一些提示?

谢谢!

1 个答案:

答案 0 :(得分:1)

您列出的所有方法都是可能的。哪一个最好,实际上取决于您希望对该过程进行控制,或者是一次性操作还是要继续运行。

Kafka Streams提供了一种简单的方法,可以通过DSL将一个主题传播到另一个主题

您可以执行类似的操作(演示代码显然不适用于生产!):

Properties props = new Properties();
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "streams-wordcount");
props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");

final Serde<byte[]> bytesSerdes = Serdes.ByteArray();
final StreamsBuilder builder = new StreamsBuilder();
KStream<byte[], byte[]> input = builder.stream(
        "input-topic",
        Consumed.with(bytesSerdes, bytesSerdes)
);
input.to("output-topic", Produced.with(bytesSerdes, bytesSerdes));

final KafkaStreams streams = new KafkaStreams(builder.build(), props);
try {
    streams.start();
    Thread.sleep(60000L);
} catch (Exception e) {
    e.printStackTrace();
} finally {
    streams.close();
}