Ack-oder Nack in rabbitMQ
Ich bin mit rabbitMQ, ich nehme jede Nachricht aus der Warteschlange mit basic_get ohne automatisch durch ACK bestätigt Verfahren, was bedeutet, dass die Nachricht verbleibt in der Warteschlange bis ich auf ack oder nack der Nachricht.
Manchmal habe ich Nachrichten, die nicht verarbeitet werden können, weil einige exception geworfen, die Sie davon abhielt, nicht vollständig verarbeitet.
Frage ist, was macht es aus, wenn ich die beiden ack-Nachrichten an den Erfolg und Ausnahme geworfen, ich meine, in Bezug auf der Ergebnis-Nachrichten immer aus der Warteschlange, also was macht es schon, wenn ich mit ack oder nack in diesem Szenario?
Vielleicht verpasse ich etwas, wenn Sie sich jedes opration?
InformationsquelleAutor JavaSa | 2015-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den basic.nack Befehl ist anscheinend ein RabbitMQ-Erweiterung, die erweitert die Funktionalität von basic.ablehnen, um eine bulk-Verarbeitung-Modus. Beide verfügen über einen "bit" (also boolean) flag of
requeue
, so dass Sie tatsächlich haben mehrere Möglichkeiten:nack
/reject
mitrequeue=1
: die Nachricht wird wieder in die Warteschlange kam es aus als wäre es eine neue Nachricht, das könnte nützlich sein im Fall von einer temporären Störung auf der consumer-Seitenack
/reject
mitrequeue=0
und konfiguriert Dead Letter Exchange (DLX), veröffentlicht die Nachricht, dass der Austausch, so dass Sie werden abgeholt von einem anderen queuenack
/reject
mitrequeue=0
und keine DLX-Gerät wird einfach die Nachricht verwerfenack
entfernen der Nachricht aus der Warteschlange, auch wenn Sie ein DLX konfiguriert istWenn Sie kein DLX konfiguriert, immer mit
ack
wird die gleiche sein, wienack
/reject
mitrequeue=0
; aber die logisch korrekte Funktion von Anfang an wird Ihnen mehr Flexibilität zu konfigurieren, die Dinge später anders.Eine gemeinsame Analogie (die möglicherweise oder möglicherweise nicht sinnvoll, Sie) ist, dass ein Austausch ist wie ein Post Office und eine queue ist wie ein Postfach. Sie immer nur die Veröffentlichung einer neuen Nachricht an einen exchange (auch wenn es das Standard-exchange); die Börse wird dann die route auf null, eine oder mehrere queues, in der Regel auf seine "routing-Taste". Also das einfachste DLX wäre eine, welche (weitergeleitet alles in einer einzigen Warteschlange, aber es könnte so Komplex sein, wie Sie benötigt werden.
InformationsquelleAutor IMSoP
Ack und Nack beide entfernen der Nachricht aus der Warteschlange, der Unterschied ist, dass, wenn Sie Nack einer Nachricht geht es in die DLX (dead letter-Warteschlange) wenn es eine Definition für diese Warteschlange.
InformationsquelleAutor jhilden