kafkatemplate无法注入_Spring Kafka(三)KafkaTemplate发送消息及结果回调

本文详细介绍了如何使用KafkaTemplate发送消息到Kafka,并探讨了发送回调方法,包括sendDefault方法、KafkaTemplate的异步发送机制、同步发送以及消息结果回调的实现。通过设置ProducerListener,可以监听消息发送的成功或失败情况。
摘要由CSDN通过智能技术生成

我们使用KafkaTemplate.send(String data)这个方法发送消息到Kafka中,显然这个方法并不能满足我们系统的需求,

那我们需要查看一下KafkaTemplate所实现的接口,看看还提供了什么方法。

当我们发送消息到Kafka后,我们又怎么去确认消息是否发送成功呢?这就涉及到KafkaTemplate的发送回调方法了。接下来我们开始正式讲解。

1. 查看发送接口

首先我们Ctrl+鼠标左键进入KafkaTemplate的源代码中查看一下,可以看到有关发送的接口如下。

这里的参数还是比较简单的,值得一提的事,方法中有个Long类型的时间戳(timestamp)参数,这是Kafka0.10版本提供的新功能,

主要用来使用时间索引进行查询数据以及日志切分清除策略。还有一个ProducerRecord参数,这个类其实就是整合了topic、partition、data等数据的消费实体类。

topic:这里填写的是Topic的名字

partition:这里填写的是分区的id,其实也是就第几个分区,id从0开始。表示指定发送到该分区中

timestamp:时间戳,一般默认当前时间戳

key:消息的键

data:消息的数据

ProducerRecord:消息对应的封装类,包含上述字段

Message>:Spring自带的Message封装类,包含消息及消息头

ListenableFuture>sendDefault(V data);

ListenableFuture>sendDefault(K key, V data);

ListenableFuture>sendDefault(Integer partition, K key, V data);

ListenableFuture>sendDefault(Integer partition, Long timestamp, K key, V data);

ListenableFuture>send(String topic, V data);

ListenableFuture>send(String topic, K key, V data);

ListenableFuture>send(String topic, Integer partition, K key, V data);

ListenableFuture>send(String topic, Integer partition, Long timestamp, K key, V data);

ListenableFuture> send(ProducerRecordrecord);

ListenableFuture> send(Message> message);

View Code

2. 使用sendDefault发送消息

首先在KafkaConfiguration编写一个带有默认Topic参数的KafkaTemplate,同时为另外一个KafkaTemplate加上@Primary注解,

@Primary注解的意思是在拥有多个同类型的Bean时优先使用该Bean,到时候方便我们使用@Autowired注解自动注入。

//这个是我们之前编写的KafkaTemplate代码,加入@Primary注解

@Bean

@Primarypublic KafkaTemplatekafkaTemplate() {

KafkaTemplate template= new KafkaTemplate(producerFactory());returntemp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值