911
魔獸
隊列方式接收通知__接收消息通知_開發人員指南_視頻點播-阿裏雲
接收消息通知-隊列-PHP
這裏簡單介紹一下消息服務的要求和安裝說明,詳細請參考消息服務提供的文檔:SDK下載和隊列使用手冊。
示例的語言采用PHP,其他語言使用說明,請參考消息服務提供的文檔:SDK使用手冊。
環境要求
PHP 5.5+
安裝
從Aliyun下載消息服務的PHP SDK
解壓到項目目錄,解壓後的目錄名是
php_sdk
。示例代碼
引用消息服務SDK
require_once(dirname(__FILE__).'/php_sdk/mns-autoloader.php');
初始化消息服務
MNS對用戶的每個區域都配置了一個單獨的服務域名,規則是:https://${UserId}.mns.${Region}.aliyuncs.com 。示例代碼使用的華東1區域(cn-hangzhou),也可以替換為其他區域,例如華北2區域(cn-beijing)。
use AliyunMNSClient;
use AliyunMNSExceptionMnsException;
$mns_client = new Client('https://'.$user_id.'.mns.cn-hangzhou.aliyuncs.com',
$access_key_id, $access_key_secret);
$queue = $mns_client->getQueueRef($queue_name);
接收消息
MNS接收到的每條消息都對應一個句柄,後續可以使用句柄操作這條消息(例如刪除消息)。
另外,MNS支持批量接收消息來提高性能。參考MNS的文檔批量消費消息。
接收消息時,可以指定超時時間(示例設置了3秒超時),如果隊列中沒有消息,會發生超時並觸發異常。
$receipt_handle = NULL;
$message = null;
try
{
$res = $queue->receiveMessage(3);
echo "ReceiveMessage Succeed! n";
$message = $res->getMessageBody();
$receipt_handle = $res->getreceiptHandle();
}
catch (MnsException $e)
{
echo "ReceiveMessage Failed: " . $e . "n";
}
刪除消息
消息不會主動從隊列刪除,必須顯示調用刪除消息,否則消息會一直保持在隊列中,下次還會繼續接收到同一個消息。
try
{
$res = $queue->deleteMessage($receipt_handle);
echo "DeleteMessage Succeed! n";
}
catch (MnsException $e)
{
echo "DeleteMessage Failed: " . $e . "n";
}
分析消息
消息體是字符串,內容是一個JSON對象,需要通過
json_decode
轉換成對象,然後就可以分析JSON對象來獲取詳細信息了,示例打印了這次消息是哪個輸出文件觸發的媒體工作流執行。$json_message = json_decode($message);
$input_file = $json_message->{'MediaWorkflowExecution'}->{'Input'}->{'InputFile'};
echo '輸入文件 location:'.$input_file->{'Location'}.
' bucket:'.$input_file->{'Bucket'}.
' object:'.$input_file->{'Object'}."n";
獲取視頻輸出的詳細信息
獲取到消息詳細內容後,可以配合使用點播服務API獲取工作流執行的視頻詳細信息。示例打印出這次轉碼和截圖作業的輸出地址。
如何安裝和配置點播服務的PHP SDK,參考文檔媒體庫SDK-PHP。
include_once 'aliyun-php-sdk-core/Config.php';
use MtsRequestV20140618 as Mts;
初始點播服務的client。
$profile = DefaultProfile::getProfile('cn-hangzhou',
$access_key_id,
$access_key_secret);
$mts_client = new DefaultAcsClient($profile);
打印所有轉碼作業的輸出地址和基本信息。
if (strcmp($json_message->{'Type'}, 'Report') == 0) {
$activities = $json_message->{'MediaWorkflowExecution'}->{'ActivityList'};
$transcode_job_ids = Array();
for ($i=0; $i < count($activities); $i++) {
if (strcmp($activities[$i]->{'Type'}, 'Transcode') == 0) {
$transcode_job_ids[] = $activities[$i]->{'JobId'};
}
}
$request = new MtsQueryJobListRequest();
$request->setJobIds(join(',', $transcode_job_ids));
$request->setRegionId('cn-hangzhou');
$response = $mts_client->getAcsResponse($request);
for ($i=0; $i < count($response->{'JobList'}->{'Job'}); $i++) {
$output = $response->{'JobList'}->{'Job'}[$i]->{'Output'};
$output_file = $response->{'JobList'}->{'Job'}[$i]->{'Output'}->{'OutputFile'};
$video_properties = $response->{'JobList'}->{'Job'}[$i]->{'Output'}->{'Properties'};
echo '轉碼輸出文件URL '.'https://'.$output_file->{'Bucket'}.'.'.
$output_file->{'Location'}.'.aliyuncs.com/'.
urldecode($output_file->{'Object'})."n";
echo '轉碼輸出文件基本信息 '.$video_properties->{'Width'}.'x'.$video_properties->{'Height'}.
' duration:'.$video_properties->{'Duration'}."n";
}
}
打印所有截圖作業的輸出地址。
if (strcmp($json_message->{'Type'}, 'Report') == 0) {
$activities = $json_message->{'MediaWorkflowExecution'}->{'ActivityList'};
$snapshot_job_ids = Array();
for ($i=0; $i < count($activities); $i++) {
if (strcmp($activities[$i]->{'Type'}, 'Snapshot') == 0) {
$snapshot_job_ids[] = $activities[$i]->{'JobId'};
}
}
$request = new MtsQuerySnapshotJobListRequest();
$request->setSnapshotJobIds(join(',', $snapshot_job_ids));
$request->setRegionId('cn-hangzhou');
$response = $mts_client->getAcsResponse($request);
for ($i=0; $i < count($response->{'SnapshotJobList'}->{'SnapshotJob'}); $i++) {
$snapshot_config = $response->{'SnapshotJobList'}->{'SnapshotJob'}[$i]->{'SnapshotConfig'};
$output_file = $response->{'SnapshotJobList'}->{'SnapshotJob'}[$i]->{'SnapshotConfig'}->{'OutputFile'};
echo '截圖輸出文件URL '.'https://'.$output_file->{'Bucket'}.'.'.
$output_file->{'Location'}.'.aliyuncs.com/'.
urldecode($output_file->{'Object'})."n";
}
}
最後更新:2016-10-14 23:03:19
上一篇:
請求安全令牌-Java示例代碼__上傳視頻文件_開發人員指南_視頻點播-阿裏雲
下一篇:
主題通知方式接收消息__接收消息通知_開發人員指南_視頻點播-阿裏雲
忘記密碼怎麼辦,如何找回密碼__賬號登錄_會員帳號及密碼_會員賬號&實名認證-阿裏雲
手動續費__購買實例_購買指南_雲服務器 ECS-阿裏雲
AvailableResourcesType__數據類型_API 參考_雲服務器 ECS-阿裏雲
查看慢日誌列表__日誌管理_API 參考_雲數據庫 RDS 版-阿裏雲
1.2 3步完成建表__1. RDS快速開始_數據庫RDS 體驗_體驗館-阿裏雲
ServiceParameterMap__數據類型_API_API 網關-阿裏雲
CDN訪問異常時候,測試問題出現在CDN節點還是本地網絡__故障檢測_產品使用問題_CDN-阿裏雲
數據智能同步__使用手冊_畫像分析-阿裏雲
股票_阿裏雲幫助中心-阿裏雲,領先的雲計算服務提供商
設計原則__SDK參考手冊_數據集成-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲