2016-07-25 38 views
0

Ich benutze ActiveMQ, um eine Warteschlange von Nachrichten zu speichern.
Ich verwende die PECL-Stomp-Erweiterung, um eine Verbindung herzustellen. Ich bin erfolgreich in der Warteschlange veröffentlichen und lesen von ihm erfolgreich.
Wie konfiguriere ich die Warteschlange, um eine Nachricht zu löschen, nachdem ich sie verbraucht habe?
In meinen Zuhörern, ich benutzeSo lesen Sie eine Nachricht nur einmal aus einer Warteschlange

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

Sie wollen wahrscheinlich den Verbrauch einer Nachricht bestätigen. http://php.net/manual/en/stomp.ack.php –

+0

werden Nachrichten nicht gelöscht? Bitte geben Sie mehr Kontext an –

+0

Nachrichten werden nicht gelöscht. Jedes Mal, wenn ich die Verbindung trenne und wieder an die Warteschlange anschließe, bekomme ich dieselben Nachrichten immer und immer wieder. –

Antwort

1

Sie haben den Verbrauch einer Nachricht bestätigen sie „gelöscht“ aus der Warteschlange zu erhalten. Sie können das mit $stomp->ack($messageID) tun. Wenn Sie den Beleg nicht explizit bestätigen möchten, können Sie die Kopfzeilen $stomp->subscribe von ack auf auto setzen. Dadurch wird der Server die Nachricht automatisch bestätigen und annehmen, dass sie korrekt zugestellt wurde.

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

Referenzen:
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