Ich habe aktive Warteschlange, die alle Nachrichten von Publisher haben wird. Mein Consumer liest diese Nachrichten und Acks/Nacks abhängig vom Ergebnis der Nachrichtenverarbeitung.RabbitMQ - So konfigurieren Sie bedingte DLX?
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
var processed = ProcessMessage(message)
if (processed)
channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
else
channel.BasicNack(deliveryTag: ea.DeliveryTag, multiple: false, requeue: true);
}
Meine Fragen sind
true
fürrequeue
Parameter wird eingestellt wird, wenn es richtig nacked ist?- Oder müssen wir eine andere Warteschlange für Retry erstellen?
- Sagen wir, wenn ich die Nachricht nach 10-maligem Versuch nach DLX verschieben möchte? Wie mache ich es? Ist es C# -Code oder kann eine Regel in der Warteschlange definiert werden?
- Woher weiß ich, dass eine Nachricht 10 Mal wiederholt wird? Bietet RabbitMQ einen Mechanismus oder muss ich das Nachrichtenobjekt manuell so entwerfen, dass es die Anzahl der Wiederholungen enthält?
Dank für Ihre Eingaben
Ja, ich sehe auch den gleichen Artikel. danke – techspider
Wenn ich in WorkExchange viele Warteschlangen in dem Beispiel habe, wie stelle ich sicher, dass es nur zu WorkQueue1, aber nicht zu WorkQueue2 geht? Der Parameter verwendet x-dead-letter-exchange, aber keine Warteschlangen- oder Routing-Schlüssel. – techspider
In diesem Fall benötigen Sie eine zusätzliche Exchange – Franklin