すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for Kafka:期限切れのコンシューマーオフセットが保持される原因

最終更新日:Aug 25, 2026

ApsaraMQ for Kafka は、設定された保持期間を超過したコンシューマーオフセットを削除します。しかし、アクティブなグループのコンシューマーオフセットは、期限切れになった後も保持されます。本トピックでは、その原因と解決策について説明します。

現象

バージョン 2.2.0 の ApsaraMQ for Kafka サーバーで、グループのコンシューマーオフセットが設定したコンシューマーオフセットの保持期間を超過しても削除されません。これらのコンシューマーオフセットは、コンソールで引き続き表示できます。ApsaraMQ for Kafka コンソールトピックの詳細 ページを開き、サブスクリプション関係 タブをクリックして、対象トピックの 消費の詳細 を表示します。

説明

コンシューマーオフセットの保存期間 は、コンシューマーオフセットが保持される最大期間を指定します。この期間は、コンシューマーオフセットがコミットされた時点からカウントされます。期間を超過したコンシューマーオフセットは削除されます。コンシューマーオフセットを削除しても、オフセットが 0 に設定されるわけではありません。代わりに、コンシューマーオフセットが存在しなくなります。トピックパーティションにコンシューマーオフセットをコミットするたびに、そのコンシューマーオフセットの保持タイマーは 0 にリセットされます。詳細については、「メッセージ設定の変更」をご参照ください。

考えられる原因

オープンソースの Kafka の設計に基づき、アクティブなグループのコンシューマーオフセットは、コンシューマーオフセットの保持期間を超過しても削除されません。

説明

グループは、assign メソッドではなく subscribe メソッドを使用するコンシューマースレッドを含む場合、アクティブなグループとなります。

たとえば、TestGroup という名前のグループを作成して TopicA をサブスクライブし、コンシューマーオフセットをコミットしたとします。ビジネス上の変更により、TopicA のサブスクライブを解除し、TopicB をサブスクライブした場合、TestGroup はアクティブなままであるため、このグループの TopicA と TopicB 両方のコンシューマーオフセットは削除されません。

TopicA のサブスクライブのみを解除し、TopicB をサブスクライブしない場合、TestGroup は非アクティブになります。TestGroup の TopicA におけるコンシューマーオフセットは、コンシューマーオフセットの保持期間を超過した後に削除されます。

ソリューション

期限切れのコンシューマーオフセットを削除するには、次のいずれかの方法を使用します。

  • subscribe メソッドを使用するすべてのコンシューマースレッドを切断してグループを非アクティブにし、ビジネス要件に基づいて次のいずれかの方法を使用します。

    • コンシューマーオフセットが期限切れになるまで待ちます。期限切れになると、コンシューマーオフセットは自動的に削除されます。

    • コンソールで、期限切れのコンシューマーオフセットをパーティションごとに 0 にリセットします。

    • 新しいグループに移行し、元のグループのすべてのコンシューマースレッドを非アクティブにして、元のグループのコンシューマーオフセットが期限切れになるまで待ちます。期限切れになると、コンシューマーオフセットは自動的に削除されます。

    • サーバーのバージョンを 2.6.0 にアップグレードします。

  • グループの接続を維持し、ビジネスで不要になったトピックのサブスクライブを解除します。グループがアクティブなままであっても、サブスクライブを解除したトピックのコンシューマーオフセットは、コンシューマーオフセットの保持期間を超過した後に削除されます。

上記の方法のいずれかを適用した後、コンソールで結果を確認します。[Topic Details] ページを開き、[Subscriptions] タブをクリックして、トピックの [Consumer Details] を表示します。コンシューマーオフセットが削除された場合、コンシューマーオフセットは存在しなくなります。コンシューマーオフセットを 0 にリセットした場合、コンシューマーオフセットは値 0 のまま残ります。

関連ドキュメント