このトピックでは、複数のクライアントがキューからメッセージを同時に取得しようとするときに、Simple Message Queue (旧 MNS) がメッセージの損失または反復消費をどのように防ぐかについて説明します。
VisibilityTimeout パラメーターは、各 SMQ キューに対して構成できます。 VisibilityTimeout パラメーターは、コンシューマー クライアントがメッセージを取得した後のメッセージの非表示期間を指定します。
メッセージがキューから取得されると、メッセージのステータスは Active(表示)から Inactive(非表示)に変わります。 非表示期間中は、他のコンシューマー クライアントはメッセージを取得できません。
非表示期間内にメッセージが消費された場合、コンシューマー クライアントは受信ハンドルを使用してメッセージを削除する必要があります。
非表示期間内にメッセージが消費されない場合、コンシューマーは ChangeVisibilityTimeout リクエストを送信して非表示期間を延長する必要があります。 それ以外の場合、非表示期間が経過すると、メッセージのステータスは Inactive(非表示)から Active(表示)に変わり、他のコンシューマー クライアントがメッセージを取得できるようになります。