flink连接kafka
Flink 的 Kafka 连接器 API 经历了多次重要变更,以下是主要版本变更及不同版本的使用方式:
您是否必须使用最新Flink特性?
├─ 是 → 考虑升级Java环境
└─ 否 →
├─ 项目是否需要长期支持(LTS) → 选择1.13.6
└─ 项目需要较新功能 → 选择1.15.4
主要版本变更点
-
Flink 1.7.0:引入了新的 Kafka Consumer API (
FlinkKafkaConsumer),弃用了旧的FlinkKafkaConsumer08/09/010等版本特定类 -
Flink 1.14.0:废弃了
FlinkKafkaConsumer和FlinkKafkaProducer,推荐使用新的通用KafkaSource和KafkaSinkAP
Flink 1.7.0 - 1.13.x 版本
// 统一使用 FlinkKafkaConsumer
FlinkKafkaConsumer<String> consumer = new FlinkKafkaConsumer<>(
"topic",
new SimpleStringSchema(),
properties
);
// 设置起始消费位置
consumer.setStartFromEarliest(); // 或 setStartFromLatest(), setStartFromTimestamp(long)
Flink 1.14.0 及以后版本
// 使用新的 KafkaSource API
KafkaSource<String> source = KafkaSource.<String>builder()
.setBootstrapServers("brokers")
.setTopics("topic")
.setGroupId("group-id")
.setStartingOffsets(OffsetsInitializer.earliest())
.setValueOnlyDeserializer(new SimpleStringSchema())
.build();
// 使用 KafkaSink 作为输出
KafkaSink<String> sink = KafkaSink.<String>builder()
.setBootstrapServers("brokers")
.setRecordSerializer(KafkaRecordSerializationSchema.builder()
.setTopic("topic")
.setValueSerializationSchema(new SimpleStringSchema())
.build())
.setDeliveryGuarantee(DeliveryGuarantee.AT_LEAST_ONCE)
.build();
重要说明
-
从 Flink 1.15 开始,旧的
FlinkKafkaConsumer和FlinkKafkaProducer已被完全移除 -
新 API 提供了更好的统一性和更多功能,如精确一次语义、更好的水位线支持等
-
如果从旧版本迁移,需要注意 API 的兼容性和行为差异
建议新项目直接使用最新的 KafkaSource 和 KafkaSink API,它们提供了更简洁的构建器模式和更丰富的功能配置选项。

浙公网安备 33010602011771号