Simple Message Queue (旧称:MNS) は、キューベースのメッセージングに以下の用語を使用します。キューの構成、メッセージの送受信、または API を介したメッセージのライフサイクル管理を行う前に、これらの用語をよく理解してください。
アカウント
Alibaba Cloud アカウント ID。キューを作成したアカウントがその所有者となります。
キュー
コンシューマーがメッセージを取得するまでメッセージを保存する送信先。プロデューサーはキューにメッセージを送信し、コンシューマーはキューからメッセージを受信します。キュー内の各メッセージは、メッセージ ID と受信ハンドル (ReceiptHandle) の組み合わせによって一意に識別されます。
キューの種類
| プロパティ | スタンダードキュー | 遅延キュー |
|---|---|---|
| 動作 | メッセージはすぐに消費可能になります | メッセージは、設定可能な遅延期間中非表示のままであり、その後利用可能になります |
| 遅延構成 | DelaySeconds が設定されていないか、0 に設定されています | DelaySeconds は CreateQueue または SetQueueAttributes |
| 使用タイミング | メッセージをすぐに消費する必要があるリアルタイム処理 | 消費前にクールダウン期間が必要な遅延処理 |
キュー所有者
キューを作成した Alibaba Cloud アカウント (root ユーザー) がその所有者となります。キュー所有者は、キューに対するすべての操作を実行する権限があります。Simple Message Queue (旧称:MNS) をアクティブ化した後、CreateQueue API オペレーションを呼び出してキューを作成します。キュー所有者のアカウント ID は Alibaba Cloud ウェブサイトで確認できます。
プロデューサーとコンシューマー
プロデューサー: キューにメッセージを送信するクライアント。
コンシューマー: キューからメッセージを受信するクライアント。
エンドポイント
Simple Message Queue (旧称:MNS) API 呼び出しのアクセス URL。フォーマットは次のとおりです。
http://<AccountId>.mns.<Region>.aliyuncs.com| プレースホルダー | 説明 |
|---|---|
<AccountId> | ご利用の Alibaba Cloud アカウント ID。API オペレーションを呼び出す際に、実際の アカウント ID に置き換えてください。 |
<Region> | Simple Message Queue (旧称:MNS) がデプロイされているリージョン。たとえば、cn-hangzhou や cn-shanghai などです。 |
メッセージの種類
| プロパティ | 標準メッセージ | 遅延メッセージ |
|---|---|---|
| 動作 | 配信後すぐに消費可能 | 指定された遅延期間中非表示になり、その後利用可能になる |
| 構成 | メッセージごとの DelaySeconds が設定されていない場合のデフォルトの動作 | SendMessage リクエストで DelaySeconds を設定します。 |
遅延メッセージは、送信時に設定されるメッセージごとの遅延を使用します。遅延キューは、すべての受信メッセージにキューレベルの遅延を適用します。どちらも DelaySeconds を使用しますが、スコープが異なります。
メッセージ ID と受信ハンドル
| プロパティ | メッセージ ID | レシートハンドル |
|---|---|---|
| 生成タイミング | メッセージがキューに送信されたとき | メッセージがキューから消費されたとき |
| 一意性 | キュー内では一意だが、キュー間では一意ではない | 消費操作ごとに一意 |
| ライフタイム | 永続的で不変 | 一時的。メッセージステータスが変更されると期限切れになる |
| 主な用途 | データの追跡と検証 | 消費されたメッセージの削除、または VisibilityTimeout の変更 |
| 再利用性 | メッセージのライフタイム中有効 | 単一使用。新しいハンドルを取得するには、メッセージを再度消費 |
メッセージを削除するには、メッセージ ID ではなく受信ハンドルを使用します。
メッセージステータス
各メッセージは以下のステータスを遷移します。
| ステータス | 説明 |
|---|---|
| アクティブ | 消費可能。このステータスのメッセージのみが消費できます。 |
| 非アクティブ | 消費され、VisibilityTimeout 期間中一時的に非表示。 |
| 遅延 | DelaySeconds 期間が期限切れになり、アクティブになるのを待機中。 |
| 削除済み | コンシューマーが受信ハンドルを使用して明示的に削除。 |
| 期限切れ | MessageRetentionPeriod を超過し、自動的にリサイクル。 |
ステータスの遷移
スタンダードキュー内の標準メッセージ
メッセージは [アクティブ] のステータスでキューに到着します。
コンシューマーがメッセージを受信します。ステータスは VisibilityTimeout 期間中、非アクティブに変わります。
2つの結果が考えられます。
コンシューマーは VisibilityTimeout 期間内にメッセージを削除します。ステータスは削除済みに変わります。
VisibilityTimeout 期間が削除されずに期限切れになります。ステータスはアクティブに戻り、メッセージは再度消費可能になります。
遅延キュー内の標準メッセージ
メッセージは遅延ステータスでキューに到着します。
DelaySeconds 期間が終了すると、ステータスが [Active] に変わります。
この時点から、メッセージはスタンダードキュー内の標準メッセージと同じ遷移をたどります。
遅延メッセージ (メッセージごとの遅延)
メッセージはメッセージごとの DelaySeconds 値で送信されます。初期ステータスは遅延です。
DelaySeconds 期間が期限切れになった後、ステータスはアクティブに変わります。
この時点から、メッセージはスタンダードキュー内の標準メッセージと同じ遷移をたどります。
メッセージの期限切れ
メッセージが MessageRetentionPeriod の期限切れ前に削除されない場合、現在のステータスに関わらず、ステータスは期限切れに変わります。期限切れのメッセージは自動的にリサイクルされます。
ステータス遷移図

メッセージライフサイクル図
