2016-07-25 1 views
0

J'utilise ActiveMQ pour stocker une file d'attente de messages.
J'utilise l'extension PECL Stomp pour me connecter à l'extension. Je publie avec succès dans la file d'attente et je lis avec succès.
Comment configurer la file d'attente pour supprimer un message après l'avoir consommé?
Dans mon auditeur, j'utiliserComment lire un message une seule fois à partir d'une file d'attente

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

Vous voulez probablement reconnaître la consommation d'un message. http://php.net/manual/en/stomp.ack.php –

+0

Les messages ne sont-ils pas supprimés maintenant? Veuillez fournir plus de contexte. –

+0

Les messages ne sont pas supprimés. Chaque fois que je me déconnecte et que je me reconnecte à la file d'attente, je reçois les mêmes messages encore et encore. –

Répondre

1

Vous devez reconnaître la consommation d'un message pour les obtenir « supprimés » de la file d'attente. Vous pouvez le faire avec $stomp->ack($messageID).

Si vous ne souhaitez pas accuser explicitement réception, vous pouvez définir les en-têtes $stomp->subscribe de ack à auto. Cela permettra au serveur de reconnaître automatiquement le message et de supposer qu'il a été correctement remis.

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

Références:
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