HintergrundWarum bekomme ich bei der Anfrage die gleiche Nachricht von RabbitMQ?
Es gibt zwei Nachrichten in meiner Warteschlange:
- foo
- bar
Ich habe einen Kanal, einen Verbraucher mit Qos aktiv mit einer Prefetch Zahl von 1 .
Szenario
Eine Nachricht Lieferung foo
kommt in, und ich lehne die Nachricht mit requeue=true
ab.
Erwartet: Die nächste Nachricht, die geliefert wird, ist bar
Aktuell: Die nächste Nachricht, die geliefert wird, ist foo
Frage:
Warum kommt der Verbraucher Holen Sie die Nachricht, die es nur requeued anstelle der nächsten? Und wie bekomme ich das oben beschriebene Ergebnis?
Ich erwartete, dass die requeued-Nachricht am Ende der Warteschlange sein wird.
Ich habe überlegt, die Nachricht anzuerkennen und erneut zu veröffentlichen, aber dadurch besteht die Gefahr, dass Nachrichten verloren gehen.
Vielen Dank, dass Sie darauf hingewiesen haben. Ich habe diese Dokumentationsseite vorher nicht gefunden. Haben Sie einen Vorschlag, wie Sie die Nachrichten so konsumieren können, wie ich es möchte? –
Hm, ich denke, Ihre einzige Option ist die erneute Veröffentlichung in der gleichen Warteschlange. Ihre andere Option besteht darin, eine neue Warteschlange für fehlgeschlagene Nachrichten zu erstellen und sie dann getrennt zu verarbeiten? – vranac
Ich fürchte, so. Ich werde ein paar Tests machen, wie zuverlässig das ist. Danke noch einmal! –