2.5.2. オフセットの手動によるコミット

Kafka では、各トピックは パーティション に分割されます。各パーティションは、順序付けされたイミュータブルなメッセージのシーケンスです。アプリケーションまたはサービスがメッセージをトピックに送信すると、Kafka はメッセージを選択したパーティションに追加します。Kafka は、オフセット と呼ばれる連続した ID 番号を各メッセージに割り当てて、パーティション内の各メッセージを一意に識別します。

デフォルトでは、Kafka コンシューマー (データシンクなど) が Kafka からメッセージを読み取ると、Kafka は現在のオフセット (読み取り元のパーティションの) を定期的にコミットします。オフセットコミット は、Kafka クラスターが同じパーティションにコミットされたメッセージを再送信しないように、メッセージの処理が成功したことを Kafka に通知します。

Kafka がオフセットをコミットするタイミングをより正確に制御するには (例: アプリケーションがメッセージを非同期的に処理し、問題が発生した場合にオフセットをコミットしないようにする場合)、Kafka の 自動コミット動作を無効にできます。この場合、アプリケーションがオフセットをコミットする必要があります。

kamelets を使用して Kafka に接続する場合、オフセットを手動でコミットするよう指定できます。

前提条件

  • Kafka コンシューマーの enable.auto.commit プロパティーを false に設定して、Kafka の自動コミット動作を無効にしている。
  • Connecting a data source to a Kafka topic in a kamelet binding」で説明されているように、シンクが kafka-sink kamelet である kamelet バインディングを作成している。

手順

Adding an operation to a kamelet binding」の説明どおりに、kafka-sink kamelet が含まれる kamelet バインディングの中間ステップとして kafka-manual-commit-action kamelet を追加します。