【问题标题】:How to identify which messages successfully published to kafka topic and those which failed如何识别成功发布到 kafka 主题的消息和失败的消息
【发布时间】:2019-08-13 00:45:32
【问题描述】:

向 apache kafka 发布消息列表。任何人都可以使用 kafka api 提供示例代码,展示如何识别哪些消息成功发布到主题以及哪些消息从响应中失败? (请注意,我在一个请求中将消息列表作为一批发送。)

【问题讨论】:

    标签: java apache-kafka kafka-producer-api


    【解决方案1】:

    KafkaProducer.send() 方法采用单个 ProducerRecord(消息)。

    有两种方法可以检查集群是否成功接收到这条消息:

    • 使用回调:send() 可以将回调作为第二个参数

      ProducerRecord<String, String> record = new ProducerRecord<>(topic, key, value);
      producer.send(record, new Callback() {
          @Override
          public void onCompletion(RecordMetadata metadata, Exception exception) {
              // If Exception is null, the record was sent successfully
          }
      });
      
    • 使用未来:send() 返回 Future

       ProducerRecord<String, String> record = new ProducerRecord<>(topic, key, value);
       Future<RecordMetadata> future = producer.send(record);
       try {
           RecordMetadata rm = future.get();
           // The record was sent successfully
       } catch (ExecutionException e) {
           // The record failed
       }
      

    【讨论】:

      猜你喜欢
      • 2016-03-24
      • 2023-03-10
      • 2020-01-18
      • 2018-07-13
      • 2017-03-05
      • 2018-06-20
      • 2016-01-17
      • 1970-01-01
      • 2020-06-24
      相关资源
      最近更新 更多