DVAAWSのサービスを使用した開発
注文処理システムで、同一顧客の注文は受信順に厳密な順序で処理する必要があり、異なる顧客の注文は並列に処理してスループットを確保したいです。さらに、ネットワーク再送による同一注文メッセージの重複処理を防ぐ必要があります。最も適切な構成はどれですか。
ASQS FIFOキューを使用し、MessageGroupIdに顧客IDを指定したうえでコンテンツベースの重複排除を有効化する
✓ 正解
FIFOキューはMessageGroupId単位で順序を保証し、グループ間は並列処理されます。顧客IDをグループにすれば顧客内の順序保証と顧客間の並列処理を両立でき、コンテンツベース重複排除で再送重複も防げるため要件を全て満たします。
BSQS標準キューを使用し、コンシューマー側で受信メッセージをタイムスタンプ順に並べ替えてから処理する
標準キューはベストエフォート順序かつ重複配信があり、順序保証も重複排除も提供しません。コンシューマー側の並べ替えは到着していないメッセージを考慮できず全体順序を保証できないため、要件を満たしません。
CSQS FIFOキューを使用し、全てのメッセージに同一のMessageGroupIdを指定して送信する
全メッセージに同一のMessageGroupIdを指定すると、キュー全体が1つの順序グループとして直列処理されます。顧客間の並列処理ができずスループットが大きく低下するため、並列性要件を満たしません。
DSQS FIFOキューを使用し、MessageGroupIdに注文ごとに一意な注文IDを指定して送信する
注文IDをMessageGroupIdにすると各注文が単独のグループになり、グループ内に1メッセージしかないため順序保証が意味を持ちません。同一顧客の複数注文が異なるグループに分かれ、顧客内の順序が保証されません。
解説
SQS FIFOキューでは、MessageGroupId単位で順序が保証され、異なるMessageGroupIdのメッセージは並列に処理されます。
MessageGroupIdに顧客IDを指定すれば、同一顧客内の順序保証と、顧客間の並列処理によるスループット確保を両立できます。
コンテンツベースの重複排除(またはMessageDeduplicationId)により、5分間の重複排除ウィンドウ内で同一内容メッセージの重複配信を防げます。
選択肢の標準キューは順序保証も重複排除もなく、コンシューマー並べ替えでは全体順序を保証できません。
選択肢の同一MessageGroupIdは全メッセージを直列化し、顧客間の並列処理ができません。
選択肢の注文ID単位グループは各注文が単独グループとなり、同一顧客内の順序が保証されません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →