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
Ich habe kürzlich MySQL 5.6 bereitgestellt und fe...
Generieren einer Zertifikatskette Verwenden Sie d...
Vorwort Einfach ausgedrückt ist tcpdump ein Paket...
Gemäß dem Koeffizienten von Pi und dem Radius der...
Das Raspberry Pi-Modell ist 4b, 1 G RAM. Das Syst...
Führen Sie den Befehl aus: docker run --name cent...
Früher bestand das Unterstreichen in HTML darin, ...
Bei Linux-Operationen ersetzen und zählen wir häu...
Vorwort Wenn Sie ein Topmenü erstellen, müssen Si...
Inhaltsverzeichnis Überblick CommonJS-Spezifikati...
50 Zeilen Code zum Ändern von 5 Hautfarben, einsc...
Rendern Prinzip Im Formularelement gibt es ein Mu...
In diesem Artikel wird der spezifische JavaScript...
Zuerst: <abbr> oder <acronym> Diese be...
Vorwort Dieser Artikel stellt hauptsächlich den r...