背景简述
业务上,原有的kafka集群迁移pulsar 后续会下线kafak集群,原有的一些消费kafka topic 的任务和进程需要迁移至pulsar 并下线旧的消费kafka任务。目前在迁移期间,上报的消息会双写到kafka pulsar,消费组的offset二者是独立的。
待迁移的flink job 之前flink 版本是 1.9.1(scala 2.12) 消费kafak
FlinkKafkaConsumer<String> myConsumer = KafkaConsumerFactory.get(topic, group);
env.addSource(myConsumer )...
这次迁移 job的版本集群环境需要 升级为 1.13(scala 2.12) 消费pulsar
/*job main 方法 消费topic 迁移到pulsar*/
FlinkPulsarSource<String> myConsumer = PulsarSourceFactory.getSource(topic, group);
env.addSource(myConsumer)...
/**
* @author: xiejiahao
* Date: 2021/12/22 11:28
* Description:
*/
public class PulsarSourceFactory {
public static final String serviceUrl =
"pulsar://pulsar-***:6651";
public static final String adminUrl =
"http://pulsar-*****:8441";
public static FlinkPulsarSource<String> getSource(String topic, String group) {
FlinkPulsarSource<String> flinkPulsarSource =
new FlinkPulsarSource<>(
serviceUrl,
adminUrl,
PulsarDeserializationSchema.valueOnly(new SimpleStringSchema()),
buildProperties(topic, group)).setStartFromSubscription(group);
return flinkPulsarSource;
}
private static Properties buildProperties(String topic, String group) {
Properties props = new Properties();
props.put("topic", "persistent://****/" + topic);
props.put("pulsar.reader.subscriptionRolePrefix", group);
props.setProperty("auth-plugin-classname", "org.apache.pulsar.client.impl.auth.Authenticat