flink连接kafka

Flink 的 Kafka 连接器 API 经历了多次重要变更,以下是主要版本变更及不同版本的使用方式:

您是否必须使用最新Flink特性?
├─ 是 → 考虑升级Java环境
└─ 否 →
├─ 项目是否需要长期支持(LTS) → 选择1.13.6
└─ 项目需要较新功能 → 选择1.15.4

主要版本变更点

  1. Flink 1.7.0:引入了新的 Kafka Consumer API (FlinkKafkaConsumer),弃用了旧的 FlinkKafkaConsumer08/09/010 等版本特定类

  2. Flink 1.14.0:废弃了 FlinkKafkaConsumer 和 FlinkKafkaProducer,推荐使用新的通用 KafkaSource 和 KafkaSink AP

Flink 1.7.0 - 1.13.x 版本

java
 
复制
 
下载
// 统一使用 FlinkKafkaConsumer
FlinkKafkaConsumer<String> consumer = new FlinkKafkaConsumer<>(
    "topic",
    new SimpleStringSchema(),
    properties
);

// 设置起始消费位置
consumer.setStartFromEarliest(); // 或 setStartFromLatest(), setStartFromTimestamp(long)

Flink 1.14.0 及以后版本

java
 
复制
 
下载
// 使用新的 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();

重要说明

  1. 从 Flink 1.15 开始,旧的 FlinkKafkaConsumer 和 FlinkKafkaProducer 已被完全移除

  2. 新 API 提供了更好的统一性和更多功能,如精确一次语义、更好的水位线支持等

  3. 如果从旧版本迁移,需要注意 API 的兼容性和行为差异

建议新项目直接使用最新的 KafkaSource 和 KafkaSink API,它们提供了更简洁的构建器模式和更丰富的功能配置选项。

posted @ 2025-05-22 16:01  ---江北  阅读(136)  评论(0)    收藏  举报
TOP