RabbitMQ: Wie requeue-Nachricht mit Zähler
Gibt es eine Möglichkeit zu zählen wie viel Zeit ein Auftrag requeued (über Ablehnung oder Nak), ohne manuell requeu den job?
Ich muss versuchen einen job für 'n" - Zeit und dann legen Sie es nach - 'n' - Zeit.
ps : Momentan habe ich requeue einen job manuell (drop alten job, eine neue Aufgabe erstellen mit den genauen Inhalten und einem extra-Counter-header, wenn der Zähler ist nicht vorhanden, oder der Wert ist kleiner als 'n')
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es
redelivered
message-Eigenschaft, die auf true gesetzt, wenn die Nachricht übermittelt ein oder mehr Zeit.Wenn Sie verfolgen möchten, eine erneute Zustellung zu zählen oder Links redelivers Anzahl (aka hop-limit oder ttl im IP-stack) speichert man diesen Wert in der message-body oder Header (wörtlich - verbrauchen-Nachricht, ändern Sie es, und veröffentlichen Sie Sie dann geändert zurück zu-broker).
Gibt es auch ähnliche Fragen mit Antworten, die Ihnen helfen können: Wie setze ich eine Anzahl der Wiederholungsversuche in RabbitMQ?
x-redelivered-count
oder Dekrementierenx-redeliveries-left
bis es null erreicht und dann apllying DLX oder AE-Mechanismus oder ziehen Sie einfach die Nachricht.In dem Fall, dass die Nachricht war tatsächlich tot-Buchstaben, können Sie die Inhalte der
x-death
message-header.Dies wäre beispielsweise der Fall, wenn Sie
reject
/nack
mitrequeue = false
und die Warteschlange hat eine zugeordnete dead letter exchange.In diesem Fall, den Inhalt dieses headers ist ein array. Jedes element beschreibt eine fehlgeschlagene Zustellung versuchen, die Informationen enthalten, wie die Zeit, die es versucht wurde zugestellt, routing-Informationen, etc.
Dies funktioniert für RabbitMQ - ich weiß nicht, ob es anwendbar ist, um AMQP im Allgemeinen.
BEARBEITEN
Da ursprünglich schrieb ich diese Antwort, die
x-death
header-Struktur geändert wurde.Es ist generell eine sehr schlechte Sache, die Header-änderungen-format, aber
in diesem speziellen Fall der Grund war, dass die Nachricht, die Größe wachsen würde, auf unbestimmte Zeit, wenn die Nachricht war ständig tot-Buchstaben.
Habe ich daher entfernt den Teil des Codes, die verwendet werden, um hier zu bekommen, die keinen der Todesfälle eine Nachricht.
Ist es immer noch möglich, um die Zahl der Todesfälle durch das neue header-format.
x-death
wird nur Hinzugefügt, wenn die Nachricht ist tot-Buchstaben.