コンシューマーが例外によりメッセージの消費を停止した場合、最後にコミットされたコンシューマオフセットを確認し、必要に応じてリセットします。
オフセットコミットの仕組み
コンシューマオフセットは、パーティションから次に読み取るメッセージの位置を示します。ブローカーはこの位置を自動的に更新しません。コンシューマーが明示的にコミットしたオフセットのみを記録します。
コミット方法はクライアント SDK によって異なります。ほとんどの SDK では、以下の 2 種類の方法がサポートされています。
| 方法 | 説明 |
|---|---|
| 自動コミット | SDK が定期的に、最新に消費されたメッセージのオフセット+1 をコミットします。 |
| 手動コミット | アプリケーションが commit(offsets) を呼び出して、最新に消費されたメッセージのオフセット+1 を明示的にコミットします。 |
コンシューマーが再起動すると、最後にコミットされたオフセットから処理を再開します。アプリケーションで使用しているコミット方法を把握しておくことで、コンシューマーがメッセージを再読込またはスキップする原因を特定できます。
現在のコンシューマオフセットの確認
コンシューマーの最後にコミットされたオフセットを確認するには、次の手順を実行します。
対象のトピックについて、トピック詳細 ページを開きます。
サブスクリプション タブで対象のトピックを検索し、操作 列の コンシューマ詳細 をクリックします。
表示されるパネルで、コミット済みのコンシューマオフセットを確認します。コンシューマーはこのオフセットから処理を再開します。
詳細な手順については、「コンシューマ詳細の表示」をご参照ください。
コンシューマオフセットのリセット
オフセットをリセットする前に、対象のコンシューマーグループ内のすべてのコンシューマーを停止してください。実行中のコンシューマーが存在すると、新しいオフセットがコミットされ、リセット値が上書きされる可能性があります。
コンシューマオフセットをリセットするには、次の手順を実行します。
対象のコンシューマーグループについて、グループ詳細 ページを開きます。
右上隅の コンシューマオフセットのリセット をクリックします。
コンシューマオフセットのリセット パネルで、リセット方法を選択し、対象のオフセットを設定します。
利用可能なリセット方法の一覧および詳細な手順については、「コンシューマオフセットのリセット」をご参照ください。