Grundlegende Einführung in RabbitMQ (Lernzusammenfassung)

Basiskonzept

1. In den meisten Anwendungen kann die Nachrichtendienst-Middleware verwendet werden, um die asynchrone Systemkommunikation zu verbessern und die Entkopplungsfunktionen zu erweitern

2. Zwei wichtige Konzepte im Nachrichtendienst:

Nachrichtenbroker (Nachrichtenbroker) und Ziel (Ziel) Wenn der Nachrichtensender eine Nachricht sendet, wird diese vom Nachrichtenbroker übernommen, und der Nachrichtenbroker stellt sicher, dass die Nachricht an das angegebene Ziel übermittelt wird.

3. Die Nachrichtenwarteschlange hat hauptsächlich zwei Arten von Zielen

1. Warteschlange (Warteschlange): Punkt-zu-Punkt-Nachrichtenkommunikation (Punkt-zu-Punkt)

2. Thema: Nachrichtenkommunikation veröffentlichen/abonnieren

4. Punkt-zu-Punkt:

  • Der Nachrichtensender sendet eine Nachricht, der Nachrichtenagent stellt sie in eine Warteschlange, der Nachrichtenempfänger ruft den Nachrichteninhalt aus der Warteschlange ab und die Nachricht wird nach dem Lesen aus der Warteschlange entfernt
  • Die Nachricht hat nur einen Sender und einen Empfänger, aber das bedeutet nicht, dass es nur einen Empfänger geben kann

5. Veröffentlichen und abonnieren:

  • Der Absender (Herausgeber) sendet eine Nachricht an das Thema, und mehrere Empfänger (Abonnenten) hören (abonnieren) das Thema und empfangen die Nachricht dann gleichzeitig, wenn die Nachricht eintrifft

6. JMS (Java Message Service) JAVA-Nachrichtendienst:

  • Spezifikation basierend auf dem JVM-Nachrichtenbroker. ActiveMQ und HornetMQ sind JMS-Implementierungen

7. AMQP (Advanced Message Queuing Protocol)

  • Erweitertes Message-Queuing-Protokoll, ebenfalls eine Message-Broker-Spezifikation, kompatibel mit JMS
  • RabbitMQ ist eine Implementierung von AMQP

8. Federunterstützung

  • spring-jms bietet Unterstützung für JMS
  • spring-rabbit bietet Unterstützung für AMQP
  • Für die Verbindung zum Nachrichtenbroker ist eine Implementierung von ConnectionFactory erforderlich
  • Stellen Sie JmsTemplate und RabbitTemplate zum Senden von Nachrichten bereit
  • Die Annotationen @JmsListener (JMS) und @RabbitListener (AMQP) überwachen Nachrichten, die vom Nachrichtenbroker für die Methode veröffentlicht werden
  • @EnableJms, @EnableRabbit aktivieren die Unterstützung

9. Spring Boot-Autokonfiguration

  • JmsAutoConfiguration
  • RabbitAutoConfiguration

10. MQ-Produkte auf dem Markt

  • ActiveMQ, RabbitMQ, RocketMQ, Kafka

 

Einführung in RabbitMQ:

RabbitMQ ist eine von erlang entwickelte Open-Source-Implementierung von AMQP (Advanved Message Queue Protocol).

Kernidee

Nachricht

Nachricht, die Nachricht ist anonym, sie besteht aus Nachrichtenkopf und Nachrichtentext. Der Nachrichtentext ist undurchsichtig, während der Nachrichtenkopf aus einer Reihe optionaler Attribute besteht, darunter Routing-Schlüssel (Routing-Schlüssel), Priorität (Priorität relativ zu anderen Nachrichten), Zustellmodus (zeigt an, dass die Nachricht möglicherweise dauerhafte Speicherung erfordert), usw.

Herausgeber

Ein Nachrichtenproduzent ist auch eine Clientanwendung, die Nachrichten an eine Börse veröffentlicht.

Austausch

Ein Austausch, der Nachrichten von Produzenten empfängt und sie an Warteschlangen auf dem Server weiterleitet.

Es gibt vier Arten von Exchange: Direkt (Standard), Fanout, Thema und Header. Verschiedene Arten von Exchange haben unterschiedliche Strategien zum Weiterleiten von Nachrichten

Warteschlange

Eine Nachrichtenwarteschlange, in der Nachrichten gespeichert werden, bis sie an Verbraucher gesendet werden. Es ist der Container der Nachricht und das Ziel der Nachricht. Eine Nachricht kann in eine oder mehrere Warteschlangen eingereiht werden. Die Nachricht befindet sich immer in der Warteschlange und wartet darauf, dass der Verbraucher eine Verbindung zur Warteschlange herstellt, um sie wegzunehmen.

Bindung

Bindungen werden für Zuordnungen zwischen Nachrichtenwarteschlangen und Austauschen verwendet. Eine Bindung ist eine Routing-Regel, die einen Austausch und eine Nachrichtenwarteschlange basierend auf einem Routing-Schlüssel verbindet. Daher kann ein Austausch als eine Routing-Tabelle verstanden werden, die aus Bindungen besteht.

Die Bindung von Exchange und Queue kann eine Viele-zu-Viele-Beziehung sein.

Verbindung

Eine Netzwerkverbindung, beispielsweise eine TCP-Verbindung.

Kanal (lange Verbindung)

Kanal, ein unabhängiger bidirektionaler Datenstromkanal in einer Multiplexverbindung. Ein Kanal ist eine virtuelle Verbindung, die in einer echten TCP-Verbindung hergestellt wird. AMQP-Befehle werden über den Kanal gesendet. Unabhängig davon, ob es sich um das Veröffentlichen einer Nachricht, das Abonnieren einer Warteschlange oder das Empfangen einer Nachricht handelt, werden alle diese Aktionen über den Kanal ausgeführt. Da es für das Betriebssystem sehr kostspielig ist, TCP einzurichten und zu zerstören, wird das Konzept des Kanals eingeführt, um eine TCP-Verbindung wiederzuverwenden.

Verbraucher

Der Verbraucher der Nachricht stellt ein Clientanwendungsprogramm dar, das Nachrichten aus der Nachrichtenwarteschlange erhält.

Virtueller Host

Ein virtueller Host, der eine Sammlung von Austauschen, Nachrichtenwarteschlangen und zugehörigen Objekten darstellt. Virtuelle Hosts sind separate Domänen von Servern, die dieselbe Authentifizierungs- und Verschlüsselungsumgebung nutzen. Jeder Vhost ist im Wesentlichen eine Miniversion des RabbitMQ-Servers mit eigener Warteschlange, eigenem Schalter, eigener Bindung und eigenem Berechtigungsmechanismus. Der vhost ist die Grundlage des AMQP-Konzepts und muss beim Herstellen einer Verbindung angegeben werden. Der Standard-vhost von RabbitMQ ist /.

Makler

Stellt die Nachrichtenwarteschlangenserverentität dar

 

Ich denke du magst

Origin blog.csdn.net/wzw_wwl/article/details/130987368
Empfohlen
Rangfolge