如何从队列中只读取一次消息


How to read a message only once from a queue

我正在使用ActiveMQ来存储消息队列
我正在使用PECL Stomp扩展来连接它。我正在成功地发布到队列,并成功地从中读取
我如何配置队列以在消费消息后删除该消息
在我的听众中,我使用

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

您必须确认消息的使用才能将它们从队列中"删除"。使用$stomp->ack($messageID)可以做到这一点。

如果不想明确确认收货,可以将ack$stomp->subscribe的表头设置为auto。这将使服务器自动确认消息,并假定消息已正确传递。

$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