SAMConnection::receive

(PECL sam >= 0.1.0)

SAMConnection::receive メッセージをキューあるいは購読から取得する

説明

SAMConnection::receive ( string $target [, array $properties ] ) : SAMMessage

パラメータ

target

メッセージを取得するキュー、トピックあるいは購読の識別子。

properties

オプションの連想配列で、受信操作を制御するパラメータを指定します。

プロパティ名 とりうる値
SAM_CORRELID メッセージの相関 ID 文字列にもとづいて、 受信するメッセージを選択するために使用します。
SAM_MESSAGEID メッセージのメッセージ ID 文字列にもとづいて、 受信するメッセージを選択するために使用します。
SAM_WAIT タイムアウトをミリ秒で指定します。この時間までメッセージの受信を待ち続け、 キューやトピックにメッセージがなかった場合に失敗とします。デフォルト値は 0 で、永遠に待ち続けます。この使用には注意が必要です。 メッセージが存在しない場合、PHP スクリプト自体が期限切れになるまで実行し続けます。

返り値

このメソッドは SAMMessage オブジェクトを返します。 エラーが発生した場合は FALSE を返します。

例1 キューからのメッセージの取得

<?php
$msg 
$conn->receive('queue://receive/test');

if (!
$msg) {
  
// 受信に失敗しました!
  
echo "Receive failed ($conn->errno$conn->error";
}
?>

例2 オプションを指定して、キューからのメッセージの取得

この例では SAM_CORRELID オプションを使用して、 受信するメッセージを表すための相関 ID を指定します。 また、タイムアウトを 10 秒に指定します。

<?php

$msg 
$conn->receive('queue://receive/test', array(SAM_CORRELID => $tokenSAM_WAIT => 10000));

?>

例3 購読からのメッセージの取得

この例では、購読 ID からメッセージを受信する方法を示します。

<?php
$msg 
$conn->receive($subscriptionName);

if (!
$msg) {
  
// 受信に失敗しました!
  
echo "Receive failed ($conn->errno$conn->error";
}
?>

$subscriptionName は、事前のコールで取得した購読 ID であることに注意しましょう。