Apache Beam KafkaIO生产者将不同的消息路由到不同的主题

时间:2020-05-20 21:39:19

标签: apache-kafka apache-beam apache-beam-io apache-beam-kafkaio

我有一个用例,其中传入的数据具有标识不同类型数据的键。有一个单一的输入kafka主题,其中会抛出所有类型的数据。束流管道从输入的kafka主题中读取所有消息,并且必须根据密钥路由到不同的kafka主题。

目前,KafkaIO不支持使用单个生产者来写多个主题。以下代码是KafkaIO.write()

的内部工作代码
final class AutoValue_KafkaIO_Write<K, V> extends Write<K, V> {
    private final String topic;
    private final WriteRecords<K, V> writeRecordsTransform;

    private AutoValue_KafkaIO_Write(@Nullable String topic, WriteRecords<K, V> writeRecordsTransform) {
        this.topic = topic;
        this.writeRecordsTransform = writeRecordsTransform;
    }

如何使用apache beam的kafkaIO生产者来做?

1 个答案:

答案 0 :(得分:0)

经过数天的尝试以实现消息路由,目前,kafkaIO不支持将消息路由到不同的主题。

一种解决方法是为每个不同的主题创建一个kafka生产者,并根据将哪些元素发送到不同的kafka主题,将元素分离到不同的集合中。