2.1客户端开发
一个正常的生产逻辑需要具备以下几个步骤:
(1)配置生产者客户端参数以及创建相应的生产者实例。
(2)构建待发送的消息。
(3)发送消息。
(4)关闭生产者实例。
生产者客户端示例代码
public class KafkaProducerAnalysis {
//配置客户端参数
public static final String brokerList = ” localhost:9092 ” ;
public static final StrIng topic = ” topic-demo ”;
public static Properties intConfig() {
Properties props= new Properties() ;
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerList) ;
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.put(ProducerConfig.CLIENT_ID_CONFIG,"producer.client.id.demo") ;
return props;
}
//主函数 创建生产者 发送消息
public static vo main (String[] args) {
//①获取配置信息
Properties props = intConfig();
//②创建kafka生产者
KafkaProducer<String , String> producer= new KafkaProducer<>(props);
//③构建消息对象
ProducerRecord<String, String> record = new ProducerRecord<> (topic,"hello , Kafka !” ) ;
//④发送消息
try {
producer.send(record);//发后即忘
}catch(Exception e) {
e.printStackTrace();//异常处理:实际开发中 需要重新处理异常,不只是简单的打印
}
}
}
2.1.1 必要的参数配置
在创建生产者实例之前有三个参数是必须配置的:bootstrap.servers、key serializer 和 value serializer
① bootstrap.servers :
该参数用来指定生产者客户端连接 Kafka 集群所需的 broker地址清单,
具体的内容格式为 host1:port1,host2:port2 ,可以设置一个或多个地址,此参数的默认值为“”。
并不需要所有的broker地址,建议写两个以上,保证其中一个宕机,可以连接另一个。
② key serializer 和 value serializer:
broker 端接收的消息必须以字节数组(byte[])的形式存在。
在发broker 前需要将消息中对应的 key 和 value 做相应的序列化操作来转换成字节数组。
这两个参数分别用来指定 key 和value 列化操作的序列器,这两个参数无默认值。必须填写序列化器的定名
KafkaProducer参数众多,我们可以直接使用客户端中的org.apache.kafka.clients.producer.ProducerConfig类
每个参数在 ProducerConfig 类中都有对应的名称,避免参数全类名书写错误
2.1.2 消息的发送
创建完生产者实例后,就需要构建消息,即创建ProduceRecord对象,对应的构造方法:
public ProducerRecord(String topic, Integer partiti