DVAAWSのサービスを使用した開発

SQS FIFOキューを使用したオーダー処理システムを開発している。同じ顧客の注文は必ず順番通りに処理されなければならないが、異なる顧客の注文は並列で処理したい。この要件を満たすためにSQS FIFOキューで設定すべき属性はどれか?

A
メッセージごとに一意のMessageDeduplicationIdを設定し、ContentBasedDeduplication(コンテンツベースの重複排除)を無効にする
メッセージごとに一意のMessageDeduplicationIdを設定する方式は、重複排除用であり順序保証には使えません。
B
顧客IDをMessageGroupIdとして設定し、同一グループ内のメッセージが順序通り処理されるようにする
✓ 正解
SQS FIFOキューのMessageGroupIdは、同じグループ内のメッセージを順序通りかつ1つずつ処理することを保証します。異なるMessageGroupIdを持つメッセージは並列処理可能なため、顧客IDをMessageGroupIdに設定することで「同じ顧客は順序通り・異なる顧客は並列」という要件を満たせます。
C
VisibilityTimeout(可視性タイムアウト)を長く設定して、同じ顧客のメッセージが同時処理されないようにする
VisibilityTimeout(可視性タイムアウト)を長く設定する方式は、同じ顧客のメッセージが同時処理されるのを防ぎませんし、順序保証メカニズムではありません。
D
DelaySecondsを使って各メッセージの配信を遅らせ、順序を制御する
DelaySeconds を使って各メッセージの配信を遅らせる方式は、順序を制御するメカニズムではなく、配信遅延を設定するだけです。

解説

SQS FIFOキューのMessageGroupIdは、同じグループ内のメッセージを順序通りかつ1つずつ処理することを保証します。異なるMessageGroupIdを持つメッセージは並列処理可能なため、顧客IDをMessageGroupIdに設定することで「同じ顧客は順序通り・異なる顧客は並列」という要件を満たせます。 選択肢Aのメッセージごとに一意のMessageDeduplicationIdを設定する方式は、重複排除用であり順序保証には使えません。 選択肢Cの VisibilityTimeout(可視性タイムアウト)を長く設定する方式は、同じ顧客のメッセージが同時処理されるのを防ぎませんし、順序保証メカニズムではありません。 選択肢DのDelaySeconds を使って各メッセージの配信を遅らせる方式は、順序を制御するメカニズムではなく、配信遅延を設定するだけです。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DVA の問題一覧に戻る