kafkaは、どのように送信の成功を判断していますか。
Kafka において、プロデューサーがメッセージを送信すると、メッセージの送信成功判定として、以下のような手段があります。
- 送信する
- 送信
- レコードメタデータ
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());
}
- 送信する
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());
}
}
});
送信方式が同期か非同期かに関わらず、送信に失敗した場合は、例外情報よりエラー処理を行うことができる。