函數(shù)名稱:Stomp::subscribe()
函數(shù)描述:該函數(shù)用于訂閱一個(gè)目標(biāo)的消息。
適用版本:PHP 5 >= 5.3.0, PHP 7, PECL stomp >= 0.1.0
語法:bool Stomp::subscribe ( string $destination [, array $headers ] )
參數(shù):
- destination:訂閱的目標(biāo),可以是隊(duì)列或主題的名稱。
- headers(可選):訂閱的頭信息,以關(guān)聯(lián)數(shù)組的形式提供。
返回值:
- 成功時(shí)返回 true,失敗時(shí)返回 false。
示例:
// 創(chuàng)建一個(gè)新的 Stomp 對象
$stomp = new Stomp('tcp://localhost:61613');
// 連接到消息代理
if ($stomp->connect()) {
// 訂閱一個(gè)隊(duì)列
$destination = '/queue/myqueue';
$headers = array('selector' => 'color = "blue"');
$stomp->subscribe($destination, $headers);
// 接收消息
while (true) {
$frame = $stomp->readFrame();
if ($frame) {
echo "Received message: " . $frame->body . "\n";
$stomp->ack($frame);
}
}
// 斷開連接
$stomp->disconnect();
} else {
echo "連接失敗\n";
}
在上面的示例中,我們首先創(chuàng)建了一個(gè)新的 Stomp 對象,并使用指定的消息代理地址進(jìn)行了連接。然后,我們使用 subscribe()
函數(shù)訂閱了一個(gè)名為 /queue/myqueue
的隊(duì)列,并傳遞了一個(gè)選擇器頭信息,只接收顏色為藍(lán)色的消息。接下來,我們使用一個(gè)無限循環(huán)來接收消息,并通過 readFrame()
函數(shù)讀取消息幀。如果成功讀取到消息幀,則打印消息內(nèi)容,并使用 ack()
函數(shù)確認(rèn)接收到的消息。最后,我們使用 disconnect()
函數(shù)斷開與消息代理的連接。
請注意,示例中的參數(shù)和頭信息僅作為示例,您可以根據(jù)實(shí)際需求進(jìn)行調(diào)整。