一个卡夫卡生产商可以安全地使用多个水槽吗?

时间:2018-03-20 14:32:50

标签: java apache-flink

我有一个包含三个不同processFunction的项目。如果其中任何一个发生错误,则会创建一个错误对象并将其写入侧输出。所有三个都使用相同的outputTag作为侧输出。

我的问题是:我是否必须为每个sideoutput流创建一个新的FlinkKafkaProducer,或者我可以使用相同的FlinkKafkaProducer为每个侧输出流创建一个新的接收器,因为所有三个都将写入相同的错误主题?

1 个答案:

答案 0 :(得分:2)

没有理由实际拥有不同的接收器,您实际上可以执行流的.union()并将其发送到单个接收器。

以下内容应该有效:

stream1 = source.stuff()
stream2 = source.stuff()
stream3 = source.stuff()
stream1.union(stream2, stream3).addSink(kafkaSink)