すべてのプロダクト
Search
ドキュメントセンター

:メッセージ

最終更新日:Mar 22, 2020

メッセージ

メッセージにはデータと属性が含まれています。MessageId と ReceiptHandle はどちらもキュー内のメッセージを一意に識別することができます。

通常メッセージと遅延メッセージ

メッセージは、通常メッセージと遅延メッセージに分類されます。

  • 通常メッセージは、メッセージキューに送信された後すぐに取得できるメッセージです。
  • 遅延メッセージは、キューに送信されてから一定の遅延期間が経過した後でのみ取得できるメッセージです。遅延期間は、DelaySeconds パラメーターによって決まります (詳細については、SendMessage を参照してください)。

遅延メッセージキューに送信された通常メッセージは、遅延期間が終わるまで取得できません (詳細については、キュー関連の説明を参照してください)。

MessageId

  • キュー内でメッセージを識別するには、MessageId を使用します。
  • キュー内の各メッセージには一意の MessageId が付与されます。
  • 別のメッセージキュー内の MessageId と重複する場合もあります。

メッセージが MNS キューに送信されると、MessageId が生成されます。この ID は、生成されて応答で返された後は変更されることはありません。MessageId は主にデータの検証に使用します。メッセージを削除する場合は、ReceiptHandle を使用する必要があります。

ReceiptHandle

ReceiptHandle は、メッセージが取得される際に MessageId と区別するために MNS が生成する一時的なメッセージの識別子です。取得されたメッセージを削除する場合や、VisiblityTimeout 属性の値を変更する場合は、ReceiptHandle を使用してメッセージを指定する必要があります。ReceiptHandle は 1 回しか使用できません。ReceiptHandle で識別したメッセージのステータスが変わった場合、ReceiptHandle は無効となり、コンシューマーは再度メッセージを取得して、新しい ReceiptHandle を取得する必要があります。

メッセージステータス

通常メッセージが通常キューに送信されると、メッセージの初期ステータスは [Active] になります。キューから取得された後は、VisibilityTimeout の期間中メッセージが [Inactive] になります。VisibilityTimeout の期限が切れたときにメッセージが削除されていないと、メッセージステータスは再度 [Active] になります。VisibilityTimeout 期間中にメッセージが削除されると、メッセージステータスは [Deleted] に変わります。

通常メッセージが遅延キューに送信されると、メッセージの初期ステータスは [Delayed] になります。遅延キューの DelaySeconds で指定した期限が切れると、メッセージステータスは [Active] に変わります。

遅延メッセージがメッセージキュー (通常メッセージのキューまたは遅延メッセージのキュー) に送信されると、メッセージの初期ステータスは [Delayed] になります。DelaySeconds で指定した期限が切れると、メッセージステータスは [Active] に変わります。

メッセージの最大ライフタイムは、キュー作成時に指定した MessageRetentionPeriod 属性の値によって決まります。MessageRetentionPeriod の期限が切れると、メッセージステータスは [Expired] に変わり、メッセージはガベージコレクターによって回収されます。

コンシューマーは Active ステータスのメッセージだけを取得できます。