このトピックでは、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) とは」をご参照ください。
SMQ のコールバックの仕組み
Simple Message Queue (formerly MNS) でキューを作成し、 ApsaraVideo VOD で対応するコールバックを設定する必要があります。
イベントが発生すると、ApsaraVideo VOD はイベント通知を Simple Message Queue (formerly MNS) 内のメッセージ Simple Message Queue (formerly MNS) に書き込みます。
コールバックは、ApsaraVideo VOD がメッセージを Simple Message Queue (formerly MNS) に正常に書き込んだ場合にのみ成功と見なされます。ApsaraVideo VOD が Simple Message Queue (formerly MNS) へのアクセス権限を持っていない、エンドポイントがパブリックエンドポイントでない、キュー名が間違っているなどの設定エラーにより書き込み操作が失敗した場合、ApsaraVideo VOD は最大 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 は複数のリージョンで利用可能です。イベント通知の設定はリージョンごとに独立しており、各リージョンに固有のコールバック方式と URL を設定できます。
Simple Message Queue (formerly MNS) では、異なるリージョンに複数の Simple Message Queue (formerly MNS) キューを作成できますが、ApsaraVideo VOD では、各リージョンで MNS コールバック用に設定できる Simple Message Queue (formerly MNS) キューは 1 つだけです。以下の推奨リージョンでキューを作成して使用することをお勧めします。
ビデオが中国 (北部 2) や中国 (東部 2) などの中国本土リージョンに保存されている場合、[中国 (上海)] リージョンのキューを使用することをお勧めします。[中国 (上海)] リージョン外のキューにメッセージをプッシュすると、わずかな遅延が発生する場合があります。
ビデオがシンガポールや日本 (東京) などの他のリージョンに保存されている場合は、同じリージョンでメッセージキューを作成または使用することを推奨します。
たとえば、ビデオがシンガポールリージョンに保存されている場合は、シンガポールリージョンでメッセージキューを作成または使用する必要があります。
SMQ コールバックは、さまざまな開発環境向けに複数のコールバック URL をサポートしています。詳細については、「複数のコールバック URL の設定」をご参照ください。
操作手順
ApsaraVideo VOD が Simple Message Queue (formerly MNS) にアクセスすることを承認します。
次の 2 つの方法のいずれかで権限を付与できます:
方法 1:ApsaraVideo VOD にクラウドリソースへのアクセス権限を付与します。これには、OSS、Simple Message Queue (formerly MNS)、CDN、KMS の一部の権限が含まれます。
Alibaba Cloud コンソールにログインし、RAM クイック承認ページに移動し、[承認に同意] をクリックして権限を付与します。

方法 2: RAM ユーザー、RAM ユーザーグループ、または 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 コンソールで設定されたコールバック設定はグローバルに適用されます。OpenAPI を使用してグローバルコールバックを設定したり、単一リクエストのオーバーライドを実装したりできます。
コンソール
ApsaraVideo VOD コンソールにログインします。
左側のナビゲーションウィンドウで、[設定管理] > [メディア処理] > [コールバック] を選択します。
上部のナビゲーションバーで、[ワークベンチ] の横にあるドロップダウンリストからターゲットリージョンを選択します。
コールバック を設定します。

コールバック セクションで、変更 をクリックします。
コールバックパラメーターを設定します。
パラメーター
説明
コールバック方式
Simple Message Queue (旧称:MNS) を選択します。
リージョン
ビデオが保存されているリージョンを選択します。 Simple Message Queue (formerly MNS) で作成したキューと同じリージョンを選択することをお勧めします。
キュー
指定したリージョンでキューを選択します。
説明利用可能なキューがない場合は、まずキューを作成してください。詳細については、「キューの作成」をご参照ください。
コールバックイベント
通知を受信するイベントタイプを選択します。サポートされているイベントタイプとその説明の詳細については、イベントリストをご参照ください。
説明[ビデオ AI 処理完了] を選択した場合、AIMediaAuditComplete、AIMediaDNAComplete、AIVideoTagComplete など、いずれかの AI イベントで通知がトリガーされます。
決定 をクリックして、Simple Message Queue (formerly MNS) のコールバック設定を保存します。
API
さまざまな API オペレーションを呼び出して、グローバルコールバックを設定したり、単一リクエストのオーバーライドを実行したりできます。
グローバル設定:SetMessageCallback 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 コードを使用してメッセージを消費する方法については、「キューユーザーガイド」をご参照ください。
他の言語については、呼び出しメソッドを理解した後、ReceiveMessage API オペレーションを呼び出してメッセージを取得し、DeleteMessage API オペレーションを呼び出してメッセージを削除します。
関連ドキュメント
HTTP コールバックと SMQ コールバックの比較については、「HTTP コールバックと SMQ コールバックの比較」をご参照ください。
問題が発生した場合は、「イベント通知に関するよくある質問」をご参照ください。