springboot集成整合kafka-生产者监听器ProducerListener

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢! 

  补充一个简单的东西,生产者监听器,生产者监听器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_核心设计与实践原理》

要在springboot集成kafka生产者,需要遵循以下步骤: 1. 添加Maven依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.7.2</version> </dependency> ``` 2. 配置Kafka生产者 在application.properties文件中添加Kafka的配置: ```properties spring.kafka.producer.bootstrap-servers=<broker地址> spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer ``` 3. 创建Kafka生产者 在代码中创建Kafka生产者: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.stereotype.Service; @Service public class KafkaProducerService { private final KafkaTemplate<String, String> kafkaTemplate; @Autowired public KafkaProducerService(KafkaTemplate<String, String> kafkaTemplate) { this.kafkaTemplate = kafkaTemplate; } public void sendMessage(String topic, String message) { this.kafkaTemplate.send(topic, message); } } ``` 4. 发送消息 在需要发送消息的地方,注入KafkaProducerService,并调用sendMessage方法: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class MessageController { private final KafkaProducerService kafkaProducerService; @Autowired public MessageController(KafkaProducerService kafkaProducerService) { this.kafkaProducerService = kafkaProducerService; } @PostMapping("/message") public void sendMessage(@RequestBody String message) { this.kafkaProducerService.sendMessage("test-topic", message); } } ``` 以上就是在springboot集成Kafka生产者的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值