kafkatemplate.send方法
时间: 2024-09-10 12:24:02 浏览: 38
`KafkaTemplate` 是Spring框架提供的一个用于发送消息到Kafka的模板类。`send` 方法是该类中用于实际发送消息到Kafka的一个重要方法。它允许开发者以一种简便的方式,将消息发送到指定的主题(Topic)。
`send` 方法通常具有多个重载版本,以适应不同的使用场景和需求。以下是一个使用`send`方法的简单例子:
```java
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.support.SendResult;
import org.springframework.util.concurrent.ListenableFuture;
// 假设有一个已经配置好的KafkaTemplate<String, String>实例
KafkaTemplate<String, String> kafkaTemplate;
// 发送消息到Kafka
ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send("topicName", "messageValue");
// 可以添加回调函数来处理消息发送成功或失败的事件
future.addCallback(new ListenableFutureCallback<SendResult<String, String>>() {
@Override
public void onSuccess(SendResult<String, String> result) {
System.out.println("Sent message=[" + result.getProducerRecord().value() +
"] with offset=[" + result.getRecordMetadata().offset() + "]");
}
@Override
public void onFailure(Throwable ex) {
System.out.println("Unable to send message=[" + "messageValue" +
"] due to : " + ex.getMessage());
}
});
```
在这个例子中,`send` 方法将一个字符串类型的消息发送到了名为 "topicName" 的Kafka主题。`send` 方法返回一个`ListenableFuture<SendResult>`对象,这允许我们添加一个回调,以便在发送操作完成时(无论成功还是失败)执行。
`KafkaTemplate` 还提供了一些其他发送消息的方法,例如 `sendDefault` 和 `sendPartitions`,它们允许开发者指定不同的发送策略和消息路由。
阅读全文