导入依赖
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.11.0.0</version>
</dependency>
Producer API
异步发送
package com.ln.kafka.producer;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;
import java.util.ArrayList;
import java.util.Properties;
/**
* @ProjectName: kafka
* @Package: com.ln.kafka.producer
* @Name:CustomerProducer
* @Author:linianest
* @CreateTime:2020/8/28 19:34
* @version:1.0
* @Description TODO: kafak异步发送消息
*/
public class CustomerProducer {
public static void main(String[] args) {
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"hadoop101:9092");
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.put(ProducerConfig.ACKS_CONFIG,"all");
// 每批次发送数量大小
props.put(ProducerConfig.BATCH_SIZE_CONFIG,16384);
// 等待时间
props.put(ProducerConfig.LINGER_MS_CONFIG,1);
// 拦截器
ArrayList<String> interceptors = new ArrayList<>();
interceptors.add("com.ln.kafka.interceptor.TimeInterceptor");
interceptors.add("com.ln.kafka.interceptor.CounterInterceptor");
props.put(ProducerConfig.INTERCEPTOR_CLASSES_CONFIG,interceptors);
// 创建对象
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
// 发送数据
for (int i = 0; i <1000 ; i++) {
producer.send(new ProducerRecord<String,String>("first",i+"","message-"+i));
}
// 关闭数据流
producer.close();
}
}