2014-07-25 3 views

Antwort

16

Es gibt kein x-message-ttl-Argument, das standardmäßig von der Brokerseite aus gesetzt wird. Daher können Sie den Standardwert als unendlich interpretieren.

Wenn Sie Nachricht ohne ttl veröffentlichen, ohne ttl Satz in der Warteschlange (yupp gibt es pro Nachricht und pro-Warteschlange ttl Argumente, siehe Hinweis unten):

  • , wenn die Nachricht als persistent und Warteschlange erklärt veröffentlicht als persistente Nachricht bleibt in der Warteschlange, solange sie nicht konsumiert wird;

  • Wenn die Nachricht nicht als persistent veröffentlicht wurde oder die Warteschlange nicht als persistent deklariert wurde, bleibt die Nachricht in der Warteschlange, solange sie nicht konsumiert wird oder bis der Broker neu gestartet wird.

TTL Anmerkung:

Wenn beide pro Nachricht und pro-Warteschlange ttl Satz Broker die minimale vale verwenden. Wenn z. B. pro Nachricht ttl 10000 (10 Sek.) Und pro Warteschlange ttl 20000 (20 Sek.) Ist, wird pro Nachricht ttl angewendet.

Per-Nachricht TTL Anmerkung:

Nachrichten mit abgelaufener ttl werden in der Warteschlange bleiben, solange sie nicht Schlange Kopf erreicht. Mach dir keine Sorgen, sie werden nicht zum Verbraucher geschickt, aber sie werden einige Ressourcen nehmen, bis sie den Kopf erreichen. So funktionieren RabbitMQ-Warteschlangen (sie halten sich an die FIFO-Idee, die manchmal die strikte Kompatibilität mit dem AMQP-Protokoll verletzt). Siehe Caveats section in Time-To-Live Extensions für mehr.

+2

Nachrichten bleiben in der Warteschlange, bis sie "Warteschlangenkopf" erreichen, aber bis sie an einen Kunden gesendet und bestätigt oder abgelehnt werden (ohne erneut in die Warteschlange einzureihen). Im automatischen Quittiermodus bedeutet dies "sobald sie ausgesendet werden". AMQP 0-9-1-Warteschlangen sind FIFO, aber mit dem erneuten Einreihen ist nicht klar, wie es funktionieren soll. RabbitMQ versucht, die ursprüngliche Reihenfolge der Nachrichten beizubehalten. –

+0

Wenn TTL pro Nachricht abläuft, wird diese Nachricht nicht aus der Warteschlange entfernt (es werden immer noch Ressourcen wie Speicher oder Datenträger verwendet), bis sie nicht den Warteschlangenkopf erreicht. Siehe rabbitmq.com/ttl.html#per-message-ttl-caveats für Details. Und mit dem Re-Queuing ist es auch sehr klar, Nachrichten werden nicht aus der Warteschlange entfernt, bis sie bestätigt werden (wenn Auto-Ack verwendet wird, werden sie automatisch auf der Brokerseite bestätigt, unabhängig davon, ob sie tatsächlich vom Client konsumiert werden). – pinepain

Verwandte Themen