租用问题

质量为本、客户为根、勇于拼搏、务实创新

< 返回租用问题列表

kafka如何判断是不是发送成功,如何看kafka 是否有堆积

发布时间:2023-10-20 18:49:03

kafka如何判断是否是发送成功

在 Kafka 中,生产者发送消息后,可以通过以下几种方式判断消息是否是发送成功:

  1. 同步发送方式:生产者调用 send() 方法后,会等待消息的确认返回,如果发送成功,send() 方法会返回一个 RecordMetadata 对象,其中包括了消息的元数据信息;如果发送失败,则可能抛出异常。
ProducerRecord<String, String> record = new ProducerRecord<>("topicName", "key", "value");
try {
    RecordMetadata metadata = producer.send(record).get();
    System.out.println("消息发送成功,offset:" + metadata.offset());
} catch (Exception e) {
    System.out.println("消息发送失败:" + e.getMessage());
}
  1. 异步发送方式:生产者调用 send() 方法后,可以传递一个回调函数,在消息发送完成后,会调用该回调函数,通过回调函数可以获得到发送结果。
ProducerRecord<String, String> record = new ProducerRecord<>("topicName", "key", "value");
producer.send(record, new Callback() {
    @Override
    public void onCompletion(RecordMetadata metadata, Exception e) {
        if (e != null) {
            System.out.println("消息发送失败:" + e.getMessage());
        } else {
            System.out.println("消息发送成功,offset:" + metadata.offset());
        }
    }
});

不管是同步发送或异步发送,如果发送失败,可以根据异常信息进行毛病处理。