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

How to read a message only once from a queue

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

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

您必须确认消息的使用才能从 queue 获取消息 "deleted"。您可以使用 $stomp->ack($messageID).

如果您不想明确确认收到,您可以将 ack$stomp->subscribe 的 headers 设置为 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