Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 26359|Antwort: 2

Eine eingehende Analyse des Mechanismus der RabbitMQ-Nachrichtenantwort

[Link kopieren]
Veröffentlicht am 30.03.2018 10:42:59 | | | |


Wenn der Konsument die Nachricht erhält und die Verarbeitungsaufgabe abgeschlossen ist, sendet er ein Ack mit dieser Nachrichtenkennung, um dem Server mitzuteilen, dass die Nachricht empfangen wurde und die Verarbeitung abgeschlossen ist. RabbitMQ wartet, bis die Verbindung des Consumers, der eine Nachricht verarbeitet, verloren gegangen ist, bevor es feststellt, dass die Nachricht nicht korrekt verarbeitet wurde, daher sendet RabbitMQ die Nachricht erneut.
Die Nachrichtenbestätigung ist standardmäßig deaktiviert. Es gibt einen noAck-Parameter beim Initialisieren von Consumer,Wenn auf true gesetzt, gibt der Konsument sofort nach Empfang der Nachricht eine Ack zurück


Im Allgemeinen wird das häufig verwendete Szenario Noack in der Regel als wahr gesetzt, aber für Projekte mit hohen Risikoanforderungen, wie z. B. Zahlung. Für jede Nachricht müssen wir ihre Integrität und Korrektheit sicherstellen. Nachdem Sie die Nachricht erhalten haben, müssen Sie bestätigen, dass die korrekte Geschäftslogik ausgeführt ist, und dann aktiv einen Ack an den Server zurückgeben. Sie können die Nachrichten in der Warteschlange über den rabbitmqctl-Befehl list_queues Namen message_rady message_unacknowleded oder über die Hintergrundverwaltungsoberfläche ansehen.

Wenn noAck auf false gesetzt ist, muss der Client aktiv einen Ack an den Server senden, und wenn der Client die Nachricht nicht bestätigt, tritt folgende Situation auf:



Solange das Programm noch läuft, bleiben diese 10 Nachrichten gelöscht und können von RabbitMQ nicht erneut zugestellt werden. Noch mächtiger ist, dassRabbitMQ-Nachrichtenkonsum hat keinen Timeout-Mechanismus, das heißt, wenn das Programm nicht neu gestartet wird, befindet sich die Nachricht immer im Zustand Unacked. Vergiss diese verdammten Zustandsmeldungen nicht, wenn du an Operationsereignissen arbeitest.

Bereit

Nachrichten mit diesem Status existieren in der zu verarbeitenden Warteschlange.

Nicht bestätigt

Eine Nachricht in diesem Status zeigt an, dass sie bereits verarbeitet wird, aber nicht bestätigt wird.




Wenn das Programm geschlossen wird (solange der Consumer geschlossen ist), kehren diese 10 Nachrichten in den Bereitschaftszustand zurück.


Bestätigungsnachricht

Was, wenn der Client einen Ack an den Server sendet? Das heißt, den Empfang der Nachricht bestätigen? Der Code lautet wie folgt:


Wenn der zweite Parameter der BasicAck-Methode, multiple, auf false gesetzt wird, bedeutet das, dass RabbitMQ benachrichtigt wird, dass die aktuelle Nachricht bestätigt wurde.Wenn zutreffend, wird eine zusätzliche Nachricht, die kleiner ist als das durch den ersten Parameter angegebene Liefertag, bestätigt。 (Massenbestätigung gilt für den gesamten Kanal)

Bestätigung abbrechen

Was ist, wenn einer der Clients des verteilten Programms eine Ausnahme hat und die Bestätigung der Nachricht abbrechen möchte und andere Clients die Nachricht verarbeiten lässt?

Wenn es eine Ausnahme in der Verbrauchsnachricht gibt, müssen wir die Bestätigung abbrechen, und dann können wir die basicReject-Methode von Channel verwenden.

Der erste Parameter spezifiziert das Liefertag, und der zweite Parameter beschreibt, wie diese Fehlermeldung behandelt wird.Ein Wert von true bedeutet, dass die Nachricht wieder in den Warteschlangenheader gelegt wird, und ein Wert von false bedeutet, dass die Nachricht aufgegeben wird




Vorhergehend:Ich bringe dir bei, wie du deinen eigenen DNS-Server einrichtest!
Nächster:Baidu-Karten zur Ermittlung der Stadtkoordinaten
Veröffentlicht am 22.09.2021 20:49:04 |
Lerne zu lernen...
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com