Kafka Producer
topic
partition
トピックには複数のパーティションがあります.情報を受信するとパーティションに割り当てられます.
Producer
カフカで情報を生産し、カフカのテーマのアプリケーション、サーバに転送します.
メッセージにキー値を指定すると、指定したパーティションに送信されます.キー値が指定されていない場合、パーティションはround-robinで平均的に割り当てられます.
Key
メッセージ送信時にキー値が指定されている場合は、キーのHash値をパーティション割り当ての参照として使用します.指定するパーティションは、鍵値 を指定してください. Key値がnullの場合、Round Robin方式で割り当てられます.
Key値は、 転送結果をチェックせずに送信
これは,作成者がメッセージを送った後に到着を確認しないコードである.
カフカが生きている場合、プロデューサーは自動的にメッセージを再送信し、メッセージの転送に失敗しても、ほとんどが転送に成功しますが、いくつかのメッセージが失われます.
同期されたメッセージ転送は、応答待ちのためにスレッドを停止し、効率が低く、時間がかかります.
Async転送
非同期方式はcallbackメソッドを一緒に送信し、成功/失敗に基づいてcallbackメソッドを実行します.
partition
トピックには複数のパーティションがあります.情報を受信するとパーティションに割り当てられます.
Producer
カフカで情報を生産し、カフカのテーマのアプリケーション、サーバに転送します.
メッセージにキー値を指定すると、指定したパーティションに送信されます.キー値が指定されていない場合、パーティションはround-robinで平均的に割り当てられます.
Key
メッセージ送信時にキー値が指定されている場合は、キーのHash値をパーティション割り当ての参照として使用します.
Key値は、
send()
メソッドの2番目のパラメータに設定されます.これは,作成者がメッセージを送った後に到着を確認しないコードである.
カフカが生きている場合、プロデューサーは自動的にメッセージを再送信し、メッセージの転送に失敗しても、ほとんどが転送に成功しますが、いくつかのメッセージが失われます.
producer.send();
Sync転送同期されたメッセージ転送は、応答待ちのためにスレッドを停止し、効率が低く、時間がかかります.
send()
後、RecordMetadata
のリターンを受けます.Async転送
非同期方式はcallbackメソッドを一緒に送信し、成功/失敗に基づいてcallbackメソッドを実行します.
public void sendMessage(String message) {
ListenableFuture<SendResult<String, String>> future = orderTemplate.send(topicName, message);
future.addCallback(new ListenableFutureCallback<SendResult<String, String>>() {
@Override
public void onSuccess(SendResult<String, String> result) {
log.debug("전송 성공!!");
}
@Override
public void onFailure(Throwable ex) {
throw new TomsException("전송에 실패했습니다. ");
}
});
}
転送に成功するには論理的に実行する必要がありますが、syncを使用して効率を低下させるのは間違っていると思いますので、asyncを使用してコールバックを実行する方法を選択しました.Reference
この問題について(Kafka Producer), 我々は、より多くの情報をここで見つけました https://velog.io/@haeyon098/Kafka-producerテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol