Kafkaはどのようなメッセージ配信意味をサポートしていますか?
Kafka 支持以下三种消息传递语义:
- 一度だけ:この場合、メッセージは失われる可能性がありますが、決して重複して処理されることはありません。生産者はメッセージを送信した後、いかなる確認やリトライも行いませんので、メッセージが失われる可能性があります。
- 少なくとも一度は、この文脈ではメッセージが失われることはありませんが、複数回処理される可能性があります。 プロデューサーがメッセージを送信した後、消費者は応答機構を使用してメッセージが正しく処理されたことを確認できますが、ネットワーク障害や消費者の障害などの状況により、プロデューサーがメッセージが処理されていないと判断すると、メッセージが再送信されます。
- 仅一度:これは最も厳格なメッセージ伝達セマンティクスであり、すべてのメッセージが一度だけ処理されることを保証します。Kafkaはトランザクションと冪等性メカニズムによって、メッセージが生産者とコンシューマー間で失われることなく重複して処理されることなく伝達されるように正確な一回のセマンティクスを実現しています。
Exactly once という意味は複雑でパフォーマンスが大きいため、At least once は通常、最もよく使われるメッセージングセマンティクスです。Kafkaでは、消費者は自身のニーズに合わせて適切なメッセージングセマンティクスを選択し、メッセージの信頼性と整合性を確保することができます。