Apache Beam:如何使用不同的消息方案读取多个 Kafka 主题

mar*_*kin 5 java apache-kafka apache-spark google-cloud-dataflow apache-beam

我使用 Apache Beam KafkaIO 作为我的管道源。

我需要读取两个 Kafka 主题 topic1 和 topic2,然后将此输入作为一个加入到后续转换中。

问题是 topic1 和 topic2 包含具有不兼容方案的消息,当我阅读时,我会将每个主题的消息映射到相同的方案。

所以我想要的管道看起来像这样:

<read topic1>       <read topic2>     
     |                   |
<map to Foo>        <map to Foo>
     |                   |
      \                 /
<use same subsequent transforms on Foo>
Run Code Online (Sandbox Code Playgroud)

我发现解决这个问题的一种方法是使用一次订阅多个主题,withTopics(...)然后确定KafkaRecord<K,V>消息来自哪个主题,然后为其执行映射。

这看起来有点笨拙?在 Apache Beam 中有正确的方法吗?