読み込み中
Q2未挑戦の問題問題を見る

FIFO キューのメッセージグループ ID の決め方

順序が絡む設計では、「順序をどの単位で守るのか」を先に決めます。
標準キューの順序はベストエフォートです。送信順に届くこともありますが、保証はありません。並べ替えを受信側で自作すると、待ち合わせと欠番の扱いが増えます。
FIFO キューは厳密な順序を守りますが、その範囲はメッセージグループの中です。MessageGroupId は「この単位の中では前後を守ってほしい」という宣言だと考えます。
・グループの単位が守りたい単位とずれると(この問題の店舗 ID)、同じ対象への操作が複数のグループに散り、前後関係が決まりません。
・逆に単位を広く取りすぎると(固定の文字列で全件を 1 グループ)、そのグループを同時に扱えるコンシューマーは 1 つだけになります。
メッセージグループの数がそのまま並行して処理できる数の上限になるので、グループを細かく取れるほどスループットも伸びます。メッセージグループの粒度が、順序の保証範囲と並列度の両方を同時に決めると覚えておきましょう。
・実務では「注文 ID」「口座番号」「デバイス ID」のように、業務上の整合性を守りたい単位がそのままメッセージグループ ID になります。単位の候補が複数あるときは、「どの 2 件が入れ替わると困るか」を確かめると決まります。