2016-07-25 5 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 из ack на номер 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