このトピックでは、Simple Message Queue (formerly MNS) のイベント通知のコールバックメカニズムと手順について説明します。
背景情報
Alibaba Cloud の Simple Message Queue (formerly MNS) (SMQ) は、効率的、高信頼性、安全、かつスケーラブルな分散メッセージキューサービスです。Simple Message Queue (formerly MNS) は、キューベースのメッセージングモデルを提供し、複数のプロデューサーとコンシューマーから同じキューへの同時アクセスをサポートします。メッセージが取得されると、特定の期間、不可視状態になり、他のコンシューマーはアクセスできなくなります。メッセージは処理後に削除する必要があります。削除しない場合、不可視期間が終了すると再び可視状態になり、再コンシュームされる可能性があります。ApsaraVideo VOD は Simple Message Queue (formerly MNS) を介したイベントコールバックをサポートしています。Simple Message Queue (formerly MNS) の詳細については、「Simple Message Queue (旧称:MNS) とは」をご参照ください。
Simple Message Queue (旧称:MNS) のコールバックメカニズム
キューをSimple Message Queue (formerly MNS) で作成し、ApsaraVideo VOD で対応するコールバックを設定します。
イベントが発生すると、ApsaraVideo VOD はイベント通知を Simple Message Queue (formerly MNS) キューに書き込みます。
ApsaraVideo VOD がメッセージを Simple Message Queue (formerly MNS) キューに正常に書き込めた場合、コールバックは成功と見なされます。それ以外の場合、コールバックは失敗します。ApsaraVideo VOD が Simple Message Queue (formerly MNS) へのアクセス権限がない、エンドポイントがパブリックエンドポイントでない、キュー名が正しくないなどの設定エラーによりメッセージの書き込みに失敗した場合、ApsaraVideo VOD はコールバックをさらに 2 回再試行します。コールバックは最大 3 回試行されます。3 回の試行がすべて失敗した場合、メッセージは破棄されます。コールバックの検証と再試行の詳細については、「コールバックの検証と再試行」をご参照ください。
コールバックが成功した後、Simple Message Queue (formerly MNS) キューからメッセージを取得して、イベント通知の内容を表示できます。メッセージは受信およびコンシュームされた後にのみ削除できます。コンシューム後、メッセージは一定期間不可視状態のままになります。この期間中に削除する必要があります。そうしないと、再び可視状態になり、再コンシュームされます。
使用方法
前提条件
Alibaba Cloud アカウントが作成され、実名認証が完了していること。Alibaba Cloud アカウントを作成するには、Alibaba Cloud 公式サイトにアクセスしてください。詳細については、「Alibaba Cloud アカウントの作成」をご参照ください。
ApsaraVideo VOD が有効化されていること。詳細については、「ApsaraVideo VOD の有効化」をご参照ください。
Simple Message Queue (formerly MNS) が有効化されていること。手順については、「Simple Message Queue (旧称:MNS) の有効化と権限付与」をご参照ください。
注意事項
ApsaraVideo VOD は複数のサービスリージョンをサポートしています。イベント通知の設定は各リージョンに固有です。リージョンごとに個別のコールバックメソッドと Webhook アドレスを設定できます。
Simple Message Queue (formerly MNS) では、異なるサービスリージョンにまたがって複数の Simple Message Queue (formerly MNS) キューを作成できます。ただし、ApsaraVideo VOD では、サービスリージョンごとに MNS コールバック用に 1 つの Simple Message Queue (formerly MNS) キューしか設定できません。次のリージョンでキューを作成して使用することを推奨します:
動画が中国本土、たとえば中国 (北京) や中国 (上海) に保存されている場合は、中国 (上海) リージョンのキューを使用してください。中国 (上海) 以外のリージョンのキューにメッセージをプッシュすると、わずかな遅延が発生する可能性があります。
動画がシンガポールや日本 (東京) などの他のリージョンに保存されている場合は、対応するリージョンでメッセージキューを作成または使用してください。
たとえば、動画のストレージリージョンがシンガポールの場合、シンガポール リージョンでメッセージキューを作成または使用します。
MNS コールバックは、さまざまな開発環境をサポートするために複数の Webhook アドレスをサポートしています。詳細については、「複数の Webhook アドレスの設定」をご参照ください。
手順
ApsaraVideo VOD に Simple Message Queue (formerly MNS) にアクセスする権限を付与します。
次のいずれかの方法で権限を付与できます:
方法 1:ApsaraVideo VOD に、OSS、Simple Message Queue (formerly MNS)、CDN、KMS を含むクラウドリソースへのアクセス権限を付与します。
Alibaba Cloud 管理コンソールにログインし、リソースアクセス権限付与ページに移動して [承認の確認] をクリックします。

方法 2: ApsaraVideo VOD サービス用に、RAM ユーザー、ユーザーグループ、またはロールにSimple Message Queue (formerly MNS) へのアクセス権限を付与します。
権限付与ポリシーに、AliyunMNSFullAccess システムポリシー (Simple Message Queue (formerly MNS) へのフルアクセス) または AliyunMNSReadOnlyAccess システムポリシー (Simple Message Queue (formerly MNS) への読み取り専用アクセス) を追加します。詳細については、「RAM ユーザーの作成と権限付与」をご参照ください。
Simple Message Queue (formerly MNS) でキューを作成します。
ApsaraVideo VOD で Simple Message Queue (formerly MNS) コールバックのイベント通知を設定します。
説明ApsaraVideo VOD コンソールで設定されたコールバックは、ApsaraVideo VOD サービスにグローバルに適用されます。OpenAPI を使用すると、グローバルコールバックを設定したり、単一のリクエストのコールバックをオーバーライドしたりできます。
コンソールでの Simple Message Queue (旧称:MNS) コールバックの設定
ApsaraVideo VOD コンソールにログインします。
左側のナビゲーションウィンドウで、[設定管理] > [メディア処理] > [コールバック] を選択します。
上部のナビゲーションバーで、[ワークベンチ] の横にあるサービスリージョンをクリックし、ターゲットサービスリージョンに切り替えます。
コールバック を設定します。

コールバック の右側にある 変更 をクリックします。
コールバックパラメーターを設定します。
パラメーター名
説明
コールバックメソッド
Simple Message Queue (旧称:MNS) を選択します。
リージョン
イベント通知を設定するビデオが保存されているリージョンを選択します。 Simple Message Queue (formerly MNS) キューと同じリージョンを使用することを推奨します。
キュー
リージョン内のキューを選択します。
説明利用可能なキューがない場合は、まずキューを作成してください。詳細については、「キューの作成」をご参照ください。
コールバックイベント
必要に応じて通知を受け取りたいイベントタイプを選択します。ApsaraVideo VOD がサポートするイベントタイプと各イベント通知の意味については、「イベントリスト」をご参照ください。
説明[動画 AI 処理完了] を選択した場合、AIMediaAuditComplete、AIMediaDNAComplete、AIVideoTagComplete を含む、いずれかの AI イベントが完了した後に通知がトリガーされます。
決定 をクリックして、Simple Message Queue (formerly MNS) のコールバック設定を完了します。
OpenAPI を使用した Simple Message Queue (旧称:MNS) コールバックの設定
さまざまな API 操作を呼び出して、グローバルコールバックを設定したり、単一のリクエストのコールバックをオーバーライドしたりできます。
グローバル設定:イベント通知設定の設定 操作を呼び出します。リクエストパラメーター
CallbackTypeを Simple Message Queue (formerly MNS) に設定します。EventTypeList(コールバックイベントタイプ)、MnsEndpoint(メッセージキューのパブリックエンドポイント)、MnsQueueName(メッセージキュー名) などの他のパラメーターを設定します。単一リクエストのオーバーライド:メディアアセットのアップロードやメディア処理ジョブの送信のために API 操作を呼び出す際に、
UserDataリクエストパラメーターの MessageCallback フィールドを指定して、その特定のリクエストのコールバックキューを設定できます。これは、次の API 操作に適用されます:
説明UserDataパラメーターのMessageCallbackフィールドを指定してコールバックを設定するには、まず ApsaraVideo VOD のグローバルイベント通知を有効にし、対応するコールバックイベントタイプを設定する必要があります。そうしないと、単一リクエストのコールバック設定は有効になりません。コールバックイベントをトリガーします。
イベント通知を設定した後、ApsaraVideo VOD でメディアアセット (音声、動画、またはイメージ) のアップロードやメディア処理 (トランスコーディングやスナップショットなど) の開始などの操作を実行して、対応するコールバックイベントをトリガーできます。
Simple Message Queue (formerly MNS) でメッセージを表示します。
コールバックイベントがトリガーされると、ApsaraVideo VOD サーバー側は指定されたキューにコールバック内容を書き込みます。Simple Message Queue (formerly MNS) からメッセージを取得して、メッセージの詳細でイベント通知の内容を表示できます。
コンソール、API、または SDK を使用してメッセージを取得できます。コンソールからメッセージを取得するには、「メッセージの受信」をご参照ください。API と SDK の詳細については、「キュー API の概要」をご参照ください。
任意: Simple Message Queue (formerly MNS) のメッセージを削除します。
キューは、複数のプロデューサーとコンシューマーからの同時アクセスをサポートします。メッセージが取得されると、特定の期間、他のコンシューマーには不可視になります。メッセージはコンシュームされた後に明示的に削除する必要があります。そうしないと、不可視期間が終了すると再び可視状態になり、再コンシュームされる可能性があります。
コンソール、API、または SDK を使用してメッセージを受信できます。コンソールの手順については、「キュー操作」をご参照ください。API と SDK の情報については、「キュー API の概要」をご参照ください。
SDK の例
Simple Message Queue (formerly MNS) は、複数のプログラミング言語用の SDK を提供しています。コールバックを設定すると、以下の SDK を使用してメッセージを消費できます:
Java コードを使用してメッセージをコンシュームする方法については、「キュー使用マニュアル」をご参照ください。
Python を使用してメッセージをコンシュームする方法の詳細については、「キューユーザーガイド」をご参照ください。
C# コードを使用してメッセージをコンシュームする方法については、「キューユーザーガイド」をご参照ください。
PHP コードを使用してメッセージをコンシュームする方法については、「キューユーザーガイド」をご参照ください。
他の言語については、API 操作を呼び出してメッセージの内容を取得できます。まず、呼び出しメソッドをよく理解してください。次に、ReceiveMessage 操作を呼び出してメッセージの内容を取得し、DeleteMessage 操作を呼び出してメッセージを削除します。
参考資料
HTTP コールバックと MNS コールバックの比較については、「HTTP コールバックと Simple Message Queue (旧称:MNS) コールバックの比較」をご参照ください。
問題が発生した場合は、「イベント通知に関するよくある質問」をご参照ください。