kafka教程-springboot生产者异步发送消息(回调)

介绍

带回调的生产者,通过回调可实现下面功能:

  1. 可知道消息 发送成功 还是 发送失败
  2. 当发送成功时,还能 获取到发送的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/测试消息 ,当发送成功时,控制台会打印提示信息


原文出处:/show_1IXLwtQsydk.html