KafkaProducer发送异步消息只需调用send()不加get(),默认即异步;需配置bootstrap.servers、key/value.serializer等参数,构造ProducerRecord后send(),可选传Callback处理结果,最后务必close()释放资源。

直接用 KafkaProducer 发送异步消息,核心就是调用 send() 方法不加 .get(),并可选传入回调函数处理结果。它本身默认就是异步的,不需要额外开关配置。
准备基础配置和 Producer 实例
先设置必要参数,构建 KafkaProducer:
-
bootstrap.servers:指定 Kafka 集群地址,如
"localhost:9092" -
key.serializer 和 value.serializer:必须设置,常用
StringSerializer - 其他可选参数如
acks(影响可靠性)、retries(自动重试)、batch.size和linger.ms(影响批量效率)可按需调整
构造 ProducerRecord 并调用 send()
ProducerRecord 指定主题、键(可为 null)、值,还可选指定分区或时间戳:
- 最简形式:
new ProducerRecord("my-topic", "hello") - 带 key:
new ProducerRecord("my-topic", "user123", "order-abc") - 指定分区:
new ProducerRecord("my-topic", 2, "key", "value")
触发异步发送并处理响应
调用 producer.send(record) 即完成异步提交;若需知道是否成功或失败,传入 Callback:
- 成功时
metadata包含分区、偏移量等信息 - 失败时
exception不为 null,可在回调里记录日志、触发告警或本地重试 - 注意:回调在 sender 线程中执行,避免在其中做耗时操作(如写磁盘、远程调用)
别忘了关闭生产者
应用退出前调用 producer.close(),确保缓冲区中剩余消息被刷出、资源释放。建议用 try-with-resources 或显式 shutdown。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











