首页/数据/数据工程与 ETL 速查/Java 生产者代码示例
本包目录(311 条)
管道基础52 条
Kafka64 条
调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

Java 生产者代码示例

Java 生产者的最小可用骨架:配置序列化器与 acks、异步发送并处理回调、退出前 flush 与关闭。回调处理是避免“静默失败”的关键。

依赖kafka-clients(版本与 Broker 兼容)
发送send() 异步,返回 Future 或回调
收尾flush() + close() 保证缓冲消息发出

最小示例

最小示例
Properties props = new Properties();
props.put("bootstrap.servers", "kafka1:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("acks", "all");
props.put("enable.idempotence", "true");

try (Producer<String, String> producer = new KafkaProducer<>(props)) {
    ProducerRecord<String, String> record =
        new ProducerRecord<>("orders", "o-1001", "{\"amount\":9.9}");
    producer.send(record, (metadata, exception) -> {
        if (exception != null) {
            System.err.println("send failed: " + exception.getMessage());
        }
    });
    producer.flush();
}
生产环境建议在回调里记录失败并接入告警;只依赖自动重试会在超时后丢消息。

易错点

  • 忘记 flush/close 时进程退出会丢缓冲中的消息
  • 按字符串发送再自行拼 JSON,特殊字符转义错误会让消费端解析失败

数据来源与参考

  • Apache Kafka 官方文档:Producer API 使用示例
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌