本文将从使用 Kafka 的 Java 客户端生产者入手,剖析 Producer API 是如何向 Kafka 集群发送消息的。
基本使用
Hello Kafka
以使用 Maven 为例,引入 kafka-clients 的依赖。
org.apache.kafka
kafka-clients
${kafka-clients.version
一个简单的生产端代码,使用 KafkaProducer 发送一条“Hello, Kafka !”。
public class KafkaProducerDemo {
private static final String BROKER_LIST = "localhost:9092";
private static final String TOPIC = "topic-demo";
public static void main(String[] args) {
Properties props = initConfig();
KafkaProducer producer = new KafkaProducer<>(props);
ProducerRecord record = new ProducerRecord<>(TOPIC, "Hello, Kafka !");
try {
producer.send(record);
Thread.sleep(500L);
} catch (Exception e) {
e.printStackTrace();
} finally {
producer.close();
}
}
/**
* 初始化参数
*
* @return
*/
public static Properties initConfig() {
Properties props = new Properties();
props.put("bootstrap.servers", BROKER_LIST);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
return props;
}
}
我们注意到,被 KafkaProducer 发送的消息是一个 ProducerRecord 类型的对象。这个 ProducerRecord 类型使用泛型的方式定义其发送消息的 Key 和 Value。这里为了简单演示,都采用字符串类型,向 topic-demo 主题发送一个内容为“Hello, Kafka !”的消息。