2016-07-25 113 views
0

我正在使用ActiveMQ存儲消息隊列。
我正在使用PECL Stomp擴展連接到它。 我已成功發佈到隊列中,並且能夠成功讀取它。
如何配置隊列以在我使用後刪除消息?
在我的聽衆,我用如何從隊列中僅讀取一次消息

$c = new Stomp($url); 
$c->subscribe('/queue/something'); 
echo $c->readFrame(); 
+0

你可能想確認一個消息的消耗。 http://php.net/manual/en/stomp.ack.php –

+0

消息是不是現在被刪除?請提供更多內容 –

+0

消息未被刪除。每次斷開連接並重新連接到隊列中,我都會一遍又一遍地收到相同的消息。 –

回答

1

你不得不承認消息的消費,讓他們從隊列中「刪除」。你可以用$stomp->ack($messageID)來做到這一點。

如果您不想明確確認收據,您可以將$stomp->subscribe的的標題設置爲ackauto。這將使服務器自動確認消息並假定它已正確傳送。

$stomp->subscribe('/queue/something', array('ack' => 'auto')); 

參考文獻:
http://php.net/manual/en/stomp.ack.php
http://php.net/manual/en/stomp.subscribe.php
https://stomp.github.io/stomp-specification-1.1.html#SUBSCRIBE