現象
Alibaba Cloud の ApsaraMQ for Kafka を使用している際に、グループを削除した後もメッセージ滞留に関するアラートを受信します。
考えられる原因
メッセージ滞留のアラートを受信する原因として、以下の理由が考えられます。
サーバーサイドの Kafka バージョン 0.10.2 では、オープンソースの Apache Kafka はグループとコンシューマオフセットを削除するための Kafka API を提供していません。グループを削除しても、コンソールから論理的に削除されるだけで、コンシューマオフセットなどの実際のサーバーサイド情報は削除されません。アラートシステムはメッセージオフセットをチェックするため、結果としてアラートを受信し続けます。
グループを削除した後、コンシューマースレッドが停止しなかったり、リバランスが発生しなかったりする場合があります。この場合、スレッドはメッセージの消費を継続します。これもメッセージ滞留アラートのトリガーとなる可能性があります。
解決策
グループを削除した後にメッセージ滞留のアラートの受信を停止するには、以下の操作を実行します。
サーバーサイドのバージョンを確認し、対応する操作を実行します。
バージョン 2.2.0 以降の場合は、以下の操作を実行します。
グループにアクティブなコンシューマースレッドがない場合は、グループを直接削除します。アクティブなコンシューマースレッドとは、`subscribe` メソッドを使用してメッセージをサブスクライブするスレッドのことです。グループを削除した後もアラートを受信し続ける場合は、コンシューマオフセットをコミットし続けているコンシューマースレッドがないか確認してください。
グループが存在することを確認してから、すべてのコンシューマースレッドを切断します。コンソールで、メッセージ滞留の追跡を停止したいパーティションのコンシューマオフセットを 0 にリセットします。これにより、システムはこれらのパーティションの滞留追跡を停止します。詳細については、「コンシューマオフセットのリセット」をご参照ください。
バージョン 2.2.0 より前の場合は、以下のいずれかの操作を実行します。
オフセットの有効期限が切れるのを待ちます。オフセットは、設定されたコンシューマオフセットの保存期間が経過すると有効期限切れになります。対応するオープンソースの Apache Kafka バージョンがこの操作のためのインターフェイスを提供していないため、コンシューマオフセットを直接削除することはできません。オフセットは、保存期間内に更新されない場合、自動的にクリアされます。コンシューマオフセットの保存期間の設定方法の詳細については、「メッセージ設定の変更」をご参照ください。
コンシューマオフセットの有効期限が切れるのを待てない場合は、グループが存在することを確認し、すべてのコンシューマースレッドを切断します。その後、コンソールで、メッセージ滞留の追跡を停止したいパーティションのコンシューマオフセットを 0 にリセットします。これにより、システムはこれらのパーティションの滞留追跡を停止します。詳細については、「コンシューマオフセットのリセット」をご参照ください。
グループにアクティブなコンシューマースレッドがない場合は、サーバーサイドのバージョンを 2.2.0 以降にアップグレードします。その後、グループを再作成し、再度削除します。サーバーサイドのバージョンのアップグレード方法の詳細については、「インスタンスバージョンのアップグレード」をご参照ください。
説明バージョン 2.2.0 以降では、グループに少なくとも 1 つのアクティブなコンシューマースレッドが含まれている限り、コンシューマオフセットの保存期間を超えても、そのコンシューマオフセットは削除されません。詳細については、「コンシューマオフセットが期限切れになっても削除されないのはなぜですか?」をご参照ください。
これらの方法で問題が解決しない場合は、メッセージ滞留のモニタリングとアラートを無効にすることができます。メッセージ滞留のアラートルールを無効にする方法の詳細については、「Cloud Monitor」をご参照ください。