思维导图:
引言
本文的主要内容是对Kafka生产者的介绍,包括以下三个部分:
- Kafka生产者的使用流程:包括如何创建实例,构建消息并发送
- Kafka生产者的前处理:包括拦截器,序列化和分区器
- Kafka生产者的原理:包括整体的架构,元数据等
一.Kafka生产者的使用流程
Kafka生产者的基本使用其实和上一节中没什么太大的差别,只是对其中的配置信息进行了更为详细的描述,并使用了更加规范性的代码。
1.1 创建实例
此处实例的创建只配置了必须也是最基本的三个参数,看如下代码:
/**
* 获取生产者对象
*
* @return : org.apache.kafka.clients.producer.KafkaProducer<java.lang.String,java.lang.String>
* @author : zhouhao
* @date : 2019/5/22 20:48
*/
private KafkaProducer<String,String> generateProducer(){
//配置生产者必要参数
Properties properties = new Properties();
//Kafka集群地址
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,BROKE_LIST);
//key的序列化对象
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
//value的序列化对象
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
return new KafkaProducer<>(properties);
}
1.2 消息构建
在上一节中,我们构建消息时只输入了主题信息Topic和内容信息value。其实,一条消息对象之中还可以含有其他的信息,他们共同描述了一条消息。构建消息时使用不同的构造方法即可根据输入参数进行消息构建,如下代码中依然只用topic和value进行消息构建
/**
* 构建消息,除了这两个参数外,其实还有partition-分区,header-头信息,key-用于分区的关键字,timestamp-时间戳等字段
* 可以使用其他的构造方法进行构建
*
* @param