- 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
生产者
- 在生产者写入消息之前需要配置的必需条件如
- 需要创建kafka的配置文件对象,来配置此次的消费者对应的broker.id 一般形式就如"127.0.0.1:9092"
- 配置broker收到消息的键值的类型,目前项目中都会配置字节数组类型
- 下面实现最简单的同步kafka生产者发送消息
public void producer() {
Properties kafkaConsumerConfig = new Properties();
kafkaConsumerConfig.put("servers","127.0.0.1:9092");
KafkaProducer producer = new KafkaProducer(kafkaConsumerConfig);
ProducerRecord<String,String> producerRecord = new ProducerRecord<String,String>("xxxx","","");
producer.send(producerRecord);
}

- 上述代码是生产者使用send函数将ProducerRecord对象发送
- 我们使用的是同步写入,因为send函数是一个是一个Future类型的,我们无法感知到是否发送成功

- 我们可以使用异步写入这样有一个回调方法,可以形成写入闭环

- 上图中callBack有onCompletion此方法源码中会判断异常问题并打印出来
同步异步问题
- 上述如果是同步方法我们每次需要等待Future方法的get()函数执行完才能进行下面操作,相当于阻塞了我们的业务流程,会使系统的性能下降很多
- 我们使用异步进行写入时,是否又可以进行一个深入改造
- 我们使用多线程去使用消费者写入
- 那么我们的就将上面的异步方法继承Threa线程,将异步代码写到run()方法中
- 第一步完成后,在使用时创建一个线程池,每次将消费者线程提交到任务中