同じ グループ 内のコンシューマーが、異なるパーティションのメッセージを順不同で、または明らかな遅延を伴って異なる時点で消費します。
問題の説明
Group の管理ApsaraMQ for Kafka コンソール の [グループ] ページで、管理するグループの名前をクリックします。Group の詳細 ページで、消費ステータス タブをクリックし、管理するトピックの 消費の詳細操作 列で 最大オフセット をクリックします。表示されるパネルで、パーティションの 列の値が他のパーティションの最大オフセット列の値よりも大きい場合、そのパーティションは他のパーティションよりも早くプロデューサーからメッセージを受信します。
原因
同じ グループ 内の各コンシューマーは、均等に分割された数のパーティションのメッセージを消費します。そのため、グループ内のコンシューマーがメッセージを均等に消費できるかどうかは、パーティションの数がコンシューマーの数で割り切れるかどうかによって決まります。
デフォルトのパーティション数 12 がコンシューマー数 N で割り切れる場合、各コンシューマーはメッセージを均等に消費できます。
デフォルトのパーティション数 12 がコンシューマー数 N で割り切れない場合、特定のコンシューマーは他のコンシューマーよりも多くのメッセージを消費します。
たとえば、5 つのコンシューマーと 12 のパーティションが使用可能です。この場合、2 つのコンシューマーがそれぞれ 3 つのパーティションのメッセージを消費し、他の 3 つのコンシューマーがそれぞれ 2 つのパーティションのメッセージを消費します。消費率は、コンシューマーの処理性能によって異なります。すべてのコンシューマーの処理性能が同じである場合、3 つのパーティションのメッセージをそれぞれ消費する 2 つのコンシューマーは、2 つのパーティションのメッセージをそれぞれ消費する 3 つのコンシューマーよりもメッセージを消費する速度が遅くなります。
説明サブスクリプションまたは従量課金制 ApsaraMQ for Kafka インスタンスのデフォルトのパーティション数は 12 で、サーバーレス ApsaraMQ for Kafka インスタンスのデフォルトのパーティション数は 3 です。
解決策
パーティションの数がコンシューマーの数で割り切れることを確認します。