Vorwort ActiveMQ ist der beliebteste und leistungsstärkste Open-Source-Nachrichtenbus von Apache. ActiveMQ ist eine JMS-Provider-Implementierung, die die Spezifikationen JMS1.1 und J2EE 1.4 vollständig unterstützt. Obwohl die JMS-Spezifikation schon vor langer Zeit eingeführt wurde, spielt JMS in den heutigen J2EE-Anwendungen immer noch eine besondere Rolle. In Produktionsprojekten wird zur Kommunikation zwischen verteilten Systemen häufig eine Nachrichten-Middleware benötigt. Es verfügt über eine Reihe von Funktionen wie geringe Kopplung, zuverlässige Übermittlung, Übertragung, Flusskontrolle und eventuelle Konsistenz. In diesem Artikel werden hauptsächlich die Konzepte und Installationsanweisungen von ActiveMQ vorgestellt. Später liegt der Schwerpunkt auf der SpringBoot-Integration zur Implementierung der Spike-Nachrichtenwarteschlange. Konzept JMS-Nachrichtenmodus Punkt-zu-Punkt- oder Warteschlangenmodus Enthält drei Rollen: Nachrichtenwarteschlange (Queue), Absender (Sender) und Empfänger (Receiver). Jede Nachricht wird an eine bestimmte Warteschlange gesendet und der Empfänger ruft die Nachricht aus der Warteschlange ab. Warteschlangen enthalten Nachrichten, bis sie verbraucht sind oder das Zeitlimit überschritten wird.
Pub/Sub Enthält drei Rollen: Thema, Herausgeber und Abonnent. Mehrere Herausgeber senden Nachrichten an ein Thema und das System übermittelt diese Nachrichten an mehrere Abonnenten.
Um solche strengen Zeitabhängigkeiten zu lockern, ermöglicht JMS einem Abonnenten, ein dauerhaftes Abonnement zu erstellen. Auf diese Weise kann der Abonnent auch dann Nachrichten vom Herausgeber empfangen, wenn er nicht aktiviert (ausgeführt) ist. Wenn Sie möchten, dass die gesendete Nachricht in keiner Weise verarbeitet wird oder nur von einem Absender oder von mehreren Verbrauchern verarbeitet wird, können Sie das Pub/Sub-Modell verwenden. Grundlegende Komponenten von JMS-Nachrichten VerbindungsFactory Es gibt zwei Fabriken zum Erstellen von Verbindungsobjekten: QueueConnectionFactory und TopicConnectionFactory für zwei verschiedene JMS-Nachrichtenmodelle. Das ConnectionFactory-Objekt kann über JNDI gefunden werden. Ziel Ziel bezeichnet das Ziel der Nachrichten der Nachrichtenproduzenten bzw. die Quelle der Nachrichten für Nachrichtenkonsumenten. Für einen Nachrichtenproduzenten ist das Ziel eine Warteschlange oder ein Thema. Für einen Nachrichtenkonsumenten ist das Ziel ebenfalls eine Warteschlange oder ein Thema (also die Quelle der Nachricht). Daher besteht das Ziel eigentlich aus zwei Objekttypen: Warteschlange und Thema. Das Ziel kann über JNDI gefunden werden. Verbindung Die Verbindung stellt die zwischen dem Client und dem JMS-System hergestellte Verbindung dar (ein Wrapper für einen TCP/IP-Socket). Eine Verbindung kann eine oder mehrere Sitzungen generieren. Wie ConnectionFactory hat auch Connection zwei Typen: QueueConnection und TopicConnection. Sitzung Eine Sitzung ist eine Schnittstelle zum Bedienen von Nachrichten. Produzenten, Konsumenten, Nachrichten usw. können durch Sitzungen erstellt werden. Die Sitzung bietet Transaktionsfunktionalität. Wenn Sie eine Sitzung zum Senden/Empfangen mehrerer Nachrichten verwenden müssen, können Sie diese Sende-/Empfangsaktionen in eine Transaktion einfügen. Ebenso wird es in QueueSession und TopicSession unterteilt. Produzent der Nachricht Ein Nachrichtenproduzent wird von einer Sitzung erstellt und zum Senden von Nachrichten an ein Ziel verwendet. Ebenso gibt es zwei Arten von Nachrichtenproduzenten: QueueSender und TopicPublisher. Sie können die Methode des Nachrichtenproduzenten (Sende- oder Veröffentlichungsmethode) aufrufen, um Nachrichten zu senden. Nachrichtenkonsument Nachrichtenkonsumenten werden von der Sitzung erstellt, um an das Ziel gesendete Nachrichten zu empfangen. Zwei Typen: QueueReceiver und TopicSubscriber. Es kann über „createReceiver(Queue)“ bzw. „createSubscriber(Topic)“ der Sitzung erstellt werden. Natürlich können Sie auch die Methode createDurableSubscriber der Sitzung verwenden, um einen dauerhaften Abonnenten zu erstellen. Nachrichtenlistener Nachrichtenlistener. Wenn ein Nachrichten-Listener registriert ist, wird die onMessage-Methode des Listeners automatisch aufgerufen, sobald eine Nachricht eintrifft. MDB (Message-Driven Bean) in EJB ist eine Art MessageListener. Transport ActiveMQ unterstützt derzeit die folgenden Transportarten: VM-Transport, TCP-Transport, NIO-Transport, SSL-Transport, Peer-Transport, UDP-Transport, Multicast-Transport, HTTP- und HTTPS-Transport, WebSockets-Transport, Failover-Transport, Fanout-Transport, Discovery-Transport, ZeroConf-Transport usw.
Persistenz AMQ-Nachrichtenspeicher Die standardmäßige persistente Speichermethode von ActiveMQ 5.0. Kaha-Beständigkeit Dies ist eine Lösung speziell für die Nachrichtenpersistenz. Es ist für typische Messaging-Nutzungsmuster optimiert. JDBC-Persistenz Derzeit unterstützte Datenbanken sind: Apache Derby, Axion, DB2, HSQL, Informix, MaxDB, MySQL, Oracle, Postgresql, SQLServer, Sybase. Persistenz deaktivieren Es wird kein dauerhafter Speicher verwendet. Cluster-Lösung (Master / Slave) Reiner Master-Sklave
Gemeinsam genutztes Dateisystem Master Slave JDBC-Master-Slave
Installationsanweisungen Zur Installation wird hier Docker verwendet, Abfrage des Docker-Images: Docker-Suche ActiveMQ Laden Sie das Docker-Image herunter: Docker-Pull Webcenter/ActiveMQ Erstellen und Ausführen des ActiveMQ-Containers: docker run -d --name myactivemq -p 61617:61616 -p 8162:8161 webcenter/activemq 61616 ist der vom ActiveMQ-Container verwendete Port (61617 zugeordnet), 8161 ist der Port für die Webseitenverwaltung (extern 8162 zugeordnet). Überprüfen Sie den erstellten Container. Wenn er vorhanden ist, war die Installation erfolgreich: Docker PS Sehen Sie sich die WEB-Verwaltungsseite an: Geben Sie http://ip:8162 in den Browser ein, klicken Sie auf „ActiveMQ-Broker verwalten“ und verwenden Sie zum Anzeigen das Standardkonto/Passwort: admin/admin. Zugangspasswort konfigurieren Geben Sie den Docker-Container ein: docker exec -it myactivemq /bin/bash Legen Sie den Benutzernamen und das Passwort auf der Konsolenschnittstelle fest: # Befindet sich im Stammverzeichnis conf-Verzeichnis vi jetty-realm.properties # Passwort ändern# Benutzername: Passwort [,Rollenname ...] Administrator: Administrator, Administrator Konfigurieren des Verbindungskennworts Bearbeiten Sie die Datei activemq.xml und platzieren Sie sie unter shutdownHooks. <!-- Fügen Sie das Konto und das Passwort für den Zugriff auf ActiveMQ hinzu--> <Plugins> <simpleAuthenticationPlugin> <Benutzer> <authenticationUser Benutzername="${activemq.username}" Passwort="${activemq.password}" Gruppen="Benutzer,Administratoren"/> </Benutzer> </simpleAuthenticationPlugin> </plugins> Ändern Sie die Datei credentials.properties in conf, um das Passwort festzulegen: activemq.Benutzername=Administrator activemq.password=123456 Gast.Passwort=123456 Vorsichtsmaßnahmen Wenn es sich um einen Cloud-Server handelt, denken Sie daran, die entsprechenden Ports (61617/8160) zu öffnen. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: MySQL 5.6.28 Installations- und Konfigurations-Tutorial unter Linux (Ubuntu)
>>: Detaillierte Erläuterung des Datenreaktionsprinzips von Vue
1 Einleitung Das Binärprotokoll zeichnet SQL-Anwe...
Wenn Sie Docker zum ersten Mal verwenden, werden ...
Wenn Benutzer MySQL-Datenbanken zum ersten Mal in...
Vorwort In unserer täglichen Arbeit müssen wir hä...
Bei der Installation von Puppeteer unter Linux kö...
Beim Kompilieren und Installieren von Nginx werde...
Docker-Installation curl -fsSL https://get.docker...
Herunterladen und installierenUmgebungsvariablen ...
Inhaltsverzeichnis Vorwort 1. Rendern 2. Code 3. ...
React Native implementiert die Überwachungsgeste ...
Im vorherigen Artikel https://www.jb51.net/articl...
1. Grundlegende Einführung in die Linux-Gruppe Un...
Erste Methode Alibaba Cloud- und Baidu Cloud-Serv...
Vorwort In der Front-End-Programmierung verwenden...
1. Grundlegende Konzepte //Jeder Container kann a...