写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!
补充一个简单的东西,生产者监听器,生产者监听器ProducerListener与带回调的kafkatemplate实现类似的功能,或者说是它的一个补充,实现生产者监听器也很简单,只要实现ProducerListener接口,重写onSuccess和onError方法即可,从方法名可看出,onSuccess是消息发送成功后执行的方法,onError是消息发送失败后执行的方法,可以在监听器中进行消息发送后进一步的处理,贴下代码:
@Component
public class CustomProducerListener implements ProducerListener<String, String> {
/**
* 成功回调
*/
@Override
public void onSuccess(ProducerRecord<String, String> producerRecord,
RecordMetadata recordMetadata) {
System.out.println("推送成功,推送数据:" + producerRecord.value());
}
/**
* 失败回调
*/
@Override
public void onError(ProducerRecord<String, String> producerRecord, Exception exception) {
System.out.println("推送失败,推送数据:" + producerRecord.value() + ",失败原因:" + exception.getMessage());
}
}
我本想在KafkaProducerConfig类中producerConfigs方法中追加配置监听器的类,但是找了下ProducerConfig类中没有监听器的参数,而kafkaTemplate中有setProducerListener方法可以设置监听器,添加测试方法,并可以像下面这样配置监听器:
@GetMapping("/send6")
public String send6(String message) {
kafkaTemplate.setProducerListener(producerListener);
kafkaTemplate.send(topic, message);
return "success";
}
启动项目,访问http://localhost:8080/send6?message=test6 结果如下:
可看到打印了 “推送成功,推送数据:test6” ,配置的监听器生效了。
到目前为止,通过前几篇的学习记录,我们可以收发消息,消息发送到指定分区,接收指定分区的消息,对发送的信息做过滤 对收到的信息做处理,其它更多的功能感觉学起来也挺费劲,暂时先不更了,先去学习下kafka的基本知识,再继续完善整合springboot相关的文章,顺便推荐一本书,是我准备学习kafka后从网上找了很久才找到的,看目录反正是挺详细的,书名:《深入理解Kafka_核心设计与实践原理》