Kafkaのネイティブの自動コミットメカニズム

Kafkaの自動コミット機能は、コンシューマがメッセージを消費すると自動的にKafkaに消費オフセットを送信する機能のことです。Kafkaには自動オフセットコミットと自動ハートビートコミットという2つの自動コミット機能があります。

  1. 自動コミットオフセット:コンシューマーはメッセージを消費する時に、消費した最新のオフセットを定期的に自動的にKafkaに記録します。こうすることで、コンシューマーが異常終了したり再起動した場合でも、前回コミットしたオフセットからメッセージの消費を再開でき、すでに処理したメッセージを重複して消費することはありません。ただし、コンシューマーがメッセージ処理中に異常終了した場合、まだオフセットをコミットしていなければ、 メッセージが重複して消費されてしまいます。
  2. 定期的にハートビートを送信し、自身の生存を Kafka に通知しています。ハートビートを長時間送信しない場合、Kafka はそのコンシューマーがオフラインとみなしてパーティションを他のコンシューマーに再割り当てします。これは、コンシューマーの障害を迅速に検出してタイムリーにパーティションの再割り当てを実施し、メッセージの高信頼性と可用性を確保できるためです。

自動コミットはメッセージの消失や重複の消費につながる可能性があるため、メッセージに厳しい要件のあるシーンでは、オフセットを手動コミットすることでメッセージ処理の正確性を確保できます。

bannerAds