ここでは、MNS の要件とインストール手順について、簡単に説明します。

詳しくは、MNS のドキュメント「SDK のダウンロード」、および「キューユーザーマニュアル」をご参照ください。

この例で使用している言語は PHP です。 その他言語の使用方法の詳細については、MNS のドキュメント「SDK ユーザーマニュアル」をご参照ください。

環境要件

PHP 5.5 以降

インストール

MNS SDK for PHP を Alibaba Cloud からダウンロードします。

MNS SDK for PHP を Alibaba Cloud からダウンロードします。

この例で使用している言語は PHP です。 その他言語の使用方法の詳細については、MNS のドキュメント「SDK ユーザーマニュアル」をご参照ください。

ファイルをプロジェクトのディレクトリに展開します。 phpsdk ディレクトリが展開されます。

サンプルコード

  • MNS SDK への参照設定
            
    1. requireonce(dirname(__FILE).’/php_sdk/mns-autoloader.php’);
  • MNS の初期化
    MNS では、ユーザーの各リージョンごとに、独立したサービスドメイン名を設定します。 ルールは、 https://${UserId}.mns.${Region}.aliyuncs.com です。 次の例では、 中国 (杭州) (cn-hangzhou) を使用しています。 ユーザーの実際の要件に応じて、リージョンを 中国 (北京) (cn-beijing) などに置き換えます。
             
    1. use AliyunMNS\Client; use AliyunMNS\Exception\MnsException;
             
    1. $mns_client = new Client(‘https://'.$user_id.'.mns.cn-hangzhou.aliyuncs.com‘, $access_key_id, $access_key_secret); $queue = $mns_client->getQueueRef($queue_name);
            
    1. </li>
    2. <li class="li">メッセージの受信
    3. <p class="p">MNS が受信する各メッセージにはハンドルが割り当てられ、後でメッセージを操作する際に使用します (メッセージの削除など)。</p>
    4. <p class="p" cond-props="intl" id="intlll">また、MNS ではメッセージの一括受信をサポートしており、パフォーマンスを向上させることができます。 詳しくは、MNS のドキュメント 「BatchReceiveMessage」をご参照ください。</p>
    5. <div class="p">メッセージの受信時に、タイムアウト時間を指定することができます。 (次の例では、タイムアウト時間は 3 秒間に設定されています) キューにメッセージがない場合、タイムアウトが発生してエラーが返されます。
    6. <pre class="pre codeblock"><code>$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”; }

    
  1. </li>
  2. <li class="li">メッセージの削除
  3. <p class="p" cond-props="intl" id="ins">メッセージは自動的にキューから削除されることはありません。 メッセージの削除は、DeleteMessage を呼び出して行います。 削除を行わない場合、メッセージはキューに残り続け、次回も同じメッセージを受け取ることになります。
  4. また、DeleteMessage はメッセージを受信した後、指定された時間内に呼び出さないと失敗します。 詳しくは、「MNS - DeleteMessage」をご参照ください。
  5. </p>
  6. <pre class="pre codeblock"><code>try

{ $res = $queue->deleteMessage($receipt_handle); echo “DeleteMessage Succeed! \n”; } catch (MnsException $e) { echo “DeleteMessage Failed: “ . $e . “\n”; }

    
  1. <li class="li">メッセージの分析
  2. <div class="p">メッセージ本文は文字列で、コンテンツは JSON 形式のオブジェクトです。 <code class="ph codeph">json_decode</code> を使用して文字列をオブジェクトに変換した後、JSON オブジェクトを分析することで、メッセージの詳細を取得することができます。 次の例では、メディアワークフローを起動する出力ファイルが、出力されています。
  3. <pre class="pre codeblock"><code>$json_message = json_decode($message);

$input_file = $json_message->{‘MediaWorkflowExecution’}->{‘Input’}->{‘InputFile’}; echo ‘input_filelocation:’.$input_file->{‘Location’}. ‘ bucket:’.$input_file->{‘Bucket’}. ‘ object:’.$input_file->{‘Object’}.”\n”;