Kafka的客户端程序
准备工作
要使用kafka的客户端,首先要引入Kafka客户端的依赖,下面是2.1.0版本的依赖
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.1.0</version>
</dependency>
Kafka的生产者,需要一个properties对象用以指定broker-list以及对应的key-value的序列号类
//创建配置对象
Properties properties = new Properties();
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.1.115:9092,192.168.1.116:9092,192.168.1.117:9092");
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
生产者
先要创建生产者对象
KafkaProducer<String, String> producer = new KafkaProducer<String, String>(properties);
别忘了把生产者关闭
producer.close();
因为生产者是异步发送的,因此在生产者关闭之前最好等待一段时间,避免遗漏消息
Thread.sleep(1000);
普通生产者
普通生产者最简单,直接发送消息即可
完整例子如下
Properties properties = new Properties();
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "192.168.1.115:9092,192.168.1.116:9092,192.168.1.117:9092");
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String, String> producer = new KafkaProducer<String, String>(properties);
long b0 = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
ProducerRecord<String, String> record = new ProducerRecord<String, String>("test", String.format("k%08d", i), String.format("v%08d", i));
producer.send(record);
}
long b1 = System.currentTimeMillis();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.