本文為您介紹Simple Message Queue (formerly MNS)回調事件通知的回調機制、使用流程等資訊。
背景資訊
阿里雲Simple Message Queue (formerly MNS) (SMQ)是一種高效、可靠、安全、便捷、可彈性擴充的分布式訊息佇列。Simple Message Queue (formerly MNS)提供了隊列模型,支援多個生產者和消費者並發訪問同一個隊列,並能確保某條訊息在取出之後的特定時間段內,無法被其他消費者獲得。訊息被消費後一段時間內不可見,需要使用者主動刪除,否則該訊息會被再次消費。ApsaraVideo for VOD服務VOD支援通過Simple Message Queue (formerly MNS)來接收點播的回調資訊。更多有關Simple Message Queue (formerly MNS)的詳細介紹,請參見什麼是輕量訊息佇列(原 MNS)。
輕量訊息佇列(原MNS)回調機制
您需要在Simple Message Queue (formerly MNS)中建立隊列,並在ApsaraVideo for VOD中配置相應回調。
當事件產生時,ApsaraVideo for VOD服務會將事件通知內容寫入到Simple Message Queue (formerly MNS)的訊息佇列中。
只要ApsaraVideo for VOD服務將訊息寫入Simple Message Queue (formerly MNS)成功即視為回調成功,否則視為回調失敗。若因配置錯誤(未授權點播服務訪問Simple Message Queue (formerly MNS)、Endpoint不是公網、隊列名稱不正確等原因)導致寫入訊息失敗,ApsaraVideo for VOD服務會繼續重試回調2次,即總共最多回調3次,3次回調都失敗則會丟棄該訊息。詳細的回調判斷與重試邏輯請參見回調判斷與重試。
回調成功後,您需要主動在Simple Message Queue (formerly MNS)中去接收訊息,從接收的訊息中查看事件通知的內容。而僅當訊息被接收消費後,您才能刪除該訊息。當訊息被消費後一段時間內不可見,需要您主動刪除,否則該訊息會被再次消費。
如何使用
前提條件
您已經開通了ApsaraVideo for VOD服務。開通步驟請參見開通ApsaraVideo for VOD服務。
您已經開通了Simple Message Queue (formerly MNS)。開通步驟請參見開通輕量訊息佇列(原 MNS)並授權。
使用說明
ApsaraVideo for VOD服務支援多個服務地區,各服務地區之間的事件通知配置是相互獨立的,即每個地區可以單獨配置事件通知的回調方式和回調地址。
在Simple Message Queue (formerly MNS)中,不同服務地區下,支援建立多個Simple Message Queue (formerly MNS),但在ApsaraVideo for VOD中,每個服務地區的MNS回調中僅支援配置一個Simple Message Queue (formerly MNS)。建議您按如下推薦地區建立和使用隊列:
如果視頻儲存在中國內地地區(如華北2、華東2等),建議使用華東2(上海)地區的隊列,如果推送訊息到非華東2(上海)地區的隊列會存在較短時間的延遲。
如果視頻儲存在其他地區(如新加坡、日本等),建議建立或使用相應地區的訊息佇列。
例如:視頻儲存地區為新加坡,則應建立或使用新加坡地區的訊息佇列。
MNS方式回調支援多地址回調,可滿足多環境的開發需求。詳情請參見設定多地址回調。
使用流程
授權ApsaraVideo for VOD服務VOD訪問Simple Message Queue (formerly MNS)。
可通過以下兩種方式進行授權:
方式一:直接授予VOD對您雲資源相應的存取權限,包含OSS、Simple Message Queue (formerly MNS)、CDN以及KMS的部分許可權。
方式二:給VOD服務的使用者、使用者組或角色授予Simple Message Queue (formerly MNS)的存取權限。
將系統策略中的AliyunMNSFullAccess(管理Simple Message Queue (formerly MNS)的許可權)或AliyunMNSReadOnlyAccess(管理Simple Message Queue (formerly MNS)的許可權)添加至授權策略中,詳細操作請參見建立RAM使用者並授權。
在Simple Message Queue (formerly MNS)中建立隊列。
在ApsaraVideo for VOD服務中配置Simple Message Queue (formerly MNS)回調方式的事件通知。
說明通過點播控制台方式設定的回調為針對ApsaraVideo for VOD服務全域的回調配置;通過OpenAPI方式支援對ApsaraVideo for VOD服務進行全域配置回調或單次請求覆蓋回調。
通過控制台配置輕量訊息佇列(原MNS)回調
登入视频点播控制台。
在左側導覽列選擇組態管理 > ApsaraVideo for Media Processing配置 > 回調設定,進入到回調設定頁面。
單擊頁面頂部工作台右側的服務地區,切換到目標服務地區。
配置回調設定。

單擊回調設定右側的修改設定。
配置回調參數。
參數名稱
參數說明
回調方式
選擇Simple Message Queue (formerly MNS)。
地區
選擇需要配置事件通知的視頻儲存的地區。推薦與Simple Message Queue (formerly MNS)中建立的隊列的地區保持一致。
隊列
選擇該地區下的隊列。
說明如果沒有可選的隊列,請先建立。具體操作,請參見建立隊列。
回調事件
按需勾選相應類型的事件通知,ApsaraVideo for VOD支援的事件通知類型及各事件通知含義請參見事件列表。
說明勾選視頻AI處理完成後,所有的AI事件,包括AIMediaAuditComplete、AIMediaDNAComplete、AIVideoTagComplete,無論哪個AI事件完成後都會觸發通知。
單擊確定,完成Simple Message Queue (formerly MNS)回調設定的配置。
通過OpenAPI配置輕量訊息佇列(原MNS)回調
通過調用不同的介面,支援對ApsaraVideo for VOD服務進行全域配置回調或單次請求覆蓋回調。
全域配置:調用SetMessageCallback - 設定事件通知配置介面,請求參數
CallbackType指定為Simple Message Queue (formerly MNS),並配置EventTypeList(回調事件類型)、MnsEndpoint(訊息佇列公網Endpoint)、MnsQueueName(訊息佇列名稱)等其他參數。單次請求覆蓋:調用介面上傳媒資檔案或發起ApsaraVideo for Media Processing任務時,通過指定請求參數
UserData中的MessageCallback欄位來設定單次請求的回調隊列。涉及的API如下:
說明通過指定
UserData中的MessageCallback欄位來設定回調時,必須先開啟ApsaraVideo for VOD的全域事件通知,並配置相應的回調事件類型後,此處的回調配置才會生效。觸發回調事件。
完成事件通知配置後,您可以在ApsaraVideo for VOD服務中執行上傳媒資檔案(音/視頻或圖片),發起ApsaraVideo for Media Processing(轉碼、截圖等)等操作來觸發相應的回調事件產生。
在Simple Message Queue (formerly MNS)中查看訊息。
可選:在Simple Message Queue (formerly MNS)中刪除訊息。
SDK樣本
Simple Message Queue (formerly MNS)提供了多種語言的SDK供您使用,當回調配置完成後,您可以通過如下代碼進行消費訊息:
如何使用Java代碼消費訊息,請參見隊列使用手冊。
如何使用Python代碼消費訊息,請參見隊列使用手冊。
如何使用C#代碼消費訊息,請參見隊列使用手冊。
如何使用PHP代碼消費訊息,請參見隊列使用手冊。
其他語言可以通過調用介面來擷取訊息內容,首先掌握調用方式後,調用ReceiveMessage介面擷取訊息內容,調用DeleteMessage介面刪除訊息。
相關文檔
有關HTTP回調與MNS回調的對比,請參見HTTP回調與輕量訊息佇列(原MNS)回調對比。
使用過程中遇到問題時,請參見事件通知常見問題。
