Heim  >  Artikel  >  Java  >  Beispiel-Tutorial zur RabbitMQ-Installation (Windows).

Beispiel-Tutorial zur RabbitMQ-Installation (Windows).

零下一度
零下一度Original
2017-07-18 14:44:501479Durchsuche

Verwaltungshintergrund

rabbitmq verfügt über einen eigenen Verwaltungshintergrund, der nach der Installation konfiguriert und aktiviert werden muss
Geben Sie das Sbin-Verzeichnis im Rabbitmq-Installationsverzeichnis ein und führen Sie
rabbitmq aus -plugins aktivieren Rabbitmq_management
Kaninchenmq neu starten Der Dienst wird wirksam
Öffnen Sie http://localhost:15672/ und Sie können den Verwaltungshintergrund sehen
Der Benutzername und das Passwort sind Gast

Konfigurationsanweisungen


Verwenden Sie die Befehlszeile, um die Warteschlangenliste anzuzeigen

sbin>rabbitmqctl list_queues  
sbin>rabbitmqctl list_queues name messages_ready messages_unacknowledged

Verwenden Sie die Befehlszeile, um die Austauschliste anzuzeigen

sbin>rabbitmqctl list_exchanges

Definieren Sie die Warteschlange

RabbitMQ erlaubt Ihnen nicht, sie mit anderen Parametern neu zu definieren. Eine vorhandene Warteschlange.

RabbitMQ erlaubt Ihnen nicht, eine vorhandene Warteschlange mit anderen Parametern neu zu definieren und gibt bei jedem Programm, das dies versucht, einen Fehler zurück

Zuverlässigkeit

Um sicherzustellen, dass Nachrichten nicht verloren gehen, muss die Nachrichtenpersistenz festgelegt werden und die Warteschlange muss außerdem dauerhaft sein.
Aber das ist immer noch nicht 100 % zuverlässig, denn wenn RabbitMQ nach dem Empfang der Nachricht, aber vor Abschluss der Persistenz abstürzt, geht die Nachricht verloren.

Wiederholte Verarbeitung

Stellen Sie sich das folgende Szenario vor (Voraussetzung: Warteschlangen und Nachrichten sind dauerhaft):

  1. Der Verbraucher erhält eine Nachricht msgA, halb verarbeitet, nicht abgeschlossen, es wurde keine Bestätigung eingeleitet

  2. Zu diesem Zeitpunkt stürzte RabbitMQ ab

  3. Der Verbraucher hat die Verarbeitung der Nachricht abgeschlossen;

  4. Beim Neustart von RabbitMQ wird festgestellt, dass msgA nicht verarbeitet wurde, sodass msgA erneut an den Verbraucher gesendet wird.

In diesem Szenario wird die Nachricht msgA zweimal verarbeitet, sodass die Verbraucherseite über einen Mechanismus verfügen sollte, um eine wiederholte Verarbeitung zu verhindern.

ACK

Die ACK-Bestätigung teilt RabbitMQ nur mit, dass die Verarbeitung der Nachricht abgeschlossen ist, nicht, dass die logische Verarbeitung erfolgreich ist. Auch wenn die Geschäftsverarbeitung fehlschlägt, ist eine ACK-Bestätigung erforderlich. Denn wenn aus geschäftlichen Gründen ein Fehler auftritt, wird das Problem im Allgemeinen nicht durch einen erneuten Versuch gelöst. Nur Fehler, die durch Netzwerkunterbrechungen, Maschinenstromausfälle usw. verursacht wurden, erfordern einen erneuten Versuch.

Verhindern Sie, dass die Geschäftslast auf einen bestimmten Verbraucher konzentriert wird

channel.basicQos(prefetchCount);

Einstellungen
prefetchCount=1
Weisen Sie RabbitMQ an, jeweils nur eine Nachricht einem Verbraucher zuzuordnen, bis der last Eine diesem Verbraucher zugewiesene Nachricht wird zur Verarbeitung bestätigt. Auf diese Weise werden Nachrichten jedes Mal basierend auf den tatsächlichen Verarbeitungsbedingungen den inaktiven Verbrauchern zugewiesen.

Über den Standard-Exchange

Der Standard-Exchange ist implizit an jede Warteschlange gebunden und der Routing-Schlüssel ist der Warteschlangenname. Es kann nicht explizit gebunden oder ungebunden sein. Und es kann nicht gelöscht werden.

Der Standard-Austausch ist implizit an jede Warteschlange gebunden, mit einem Routing-Schlüssel, der dem Warteschlangennamen entspricht. Es ist nicht möglich, sich explizit an den Standard-Austausch zu binden oder von ihm zu trennen. Er kann auch nicht gelöscht werden .

Der grundlegende Prozess der Nachrichtenübermittlung

Der Herausgeber veröffentlicht eine Nachricht
--> Austausch empfängt die Nachricht (wenn der Herausgeber keinen bestimmten Austausch angibt, ist die Standardeinstellung Exchange wird verwendet) und entsprechend der Art des Austauschs und bestimmten Routing-Regeln wird die Nachricht an jede Warteschlange weitergeleitet, die den Routing-Regeln entspricht (wenn keine passende Warteschlange vorhanden ist, wird die Nachricht verworfen)
-->Die Warteschlange sendet die Nachricht an den Abonnenten. Ein bestimmter Verbraucher der Warteschlange (wenn es keinen Verbraucher gibt, bleibt die Nachricht in der Warteschlange, bis ein Verbraucher die Nachricht konsumiert)

Das Platzhalterzeichen von Topic Exchange

Das Sternchen entspricht einem Wort (Hinweis, kein Buchstabe)

* (Stern) kann genau ein Wort ersetzen.
Hash-Zeichen entspricht einer beliebigen Anzahl von Wörtern
# (Hash) kann null oder mehr Wörter ersetzen.

Die Rolle der obligatorischen und sofortigen Flags im AMQP-Protokoll

mandatorisch und unmittelbar sind die beiden Flags in basic.pulish Methode im AMQP-Protokoll. Sie werden verwendet, wenn Nachrichten an den Produzenten zurückgegeben werden, wenn das Ziel während des Prozesses nicht erreicht werden kann. Die spezifischen Unterschiede sind:

1. Obligatorisches Flag

Wenn das obligatorische Flag auf „true“ gesetzt ist und die Börse keine qualifizierte Warteschlange basierend auf ihrem eigenen Typ und NachrichtenrouteKey finden kann, wird „Basic“ verwendet Die aufgerufene .return-Methode gibt die Nachricht an den Produzenten zurück. Wenn „Mandatory“ auf „false“ gesetzt ist, verwirft der Broker die Nachricht in der oben genannten Situation direkt.

2. Unmittelbares Flag

Wenn das Unmittelbare-Flag auf „true“ gesetzt ist und Exchange beim Weiterleiten der Nachricht an die Warteschlange(n) feststellt, dass sich kein Verbraucher in der entsprechenden Warteschlange befindet, dann wird dies der Fall sein Die Nachricht wird nicht in die Warteschlange gestellt. Wenn alle mit dem Nachrichten-RouteKey verknüpften Warteschlangen (eine oder mehrere) keine Verbraucher haben, wird die Nachricht über die Methode „basic.return“ an den Produzenten zurückgegeben.

Das obige ist der detaillierte Inhalt vonBeispiel-Tutorial zur RabbitMQ-Installation (Windows).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn