介绍
带回调的生产者,通过回调可实现下面功能:
- 可知道消息 发送成功 还是 发送失败
- 当发送成功时,还能 获取到发送的topic主题、partition分区、offset偏移量
代码
需要先实现 kafka教程-springboot实现简单生产者、简单消费者 文中的代码
本文代码在文中的 生产者工程 做修改
在 ProducterCtrl 中增加下面方法,
@GetMapping("/kafka2/{message}")
public String sendMessage2(@PathVariable("message") String msg) {
kafkaTemplate.send("userlog", msg).addCallback(new ListenableFutureCallback<SendResult<String, Object>>() {
@Override
public void onFailure(Throwable ex) {
System.out.println("发送消息失败:" + ex.getMessage());
}
@Override
public void onSuccess(SendResult<String, Object> result) {
String content = String.format("发送消息成功:%s - %s - %s",
result.getRecordMetadata().topic(),
result.getRecordMetadata().partition(),
result.getRecordMetadata().offset());
System.out.println(content);
}
});
return "消息已发送";
}
测试
访问:http://localhost:8081/kafka2/测试消息 ,当发送成功时,控制台会打印提示信息