Flink 写入Kafka 到多个Topic 我想到的有两种方法
第一种:分流
利用split() 方法,不过现在已经被官方定位弃用的方法 ,给出的代替方案是side output,其实大致一样 都要多产生一个流。side output 在学习窗口算子的超时事件时应该能更清楚的了解(我当时是在这了解到的)。
这种方案的缺点就是每多一个topic 都要多产生一个流再添加一个addSink(),需要修改逻辑。而且还要,如果有100个呢?
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
addSink()
...
第二种:重写序列化方法
具体的说明看注释 主要代码看getTargetTopic方法
package kafka.connection;
import org.apache.flink.api.common.serialization.SerializationSchema;
import org.apache.flink.api.common.serialization.SerializationSchema.InitializationContext;
import org.apache.flink.streaming.connectors.kafka.KafkaContextAware;
import org.apache.flink.streaming.connectors.kafka.KafkaSerializationSchema;
import org.apache.flink.streaming.connectors.kafka.partitioner.Flin