Docker-Installation von RocketMQ und Lösungen für während der Installation aufgetretene Probleme

Docker-Installation von RocketMQ und Lösungen für während der Installation aufgetretene Probleme

In diesem Artikel wird hauptsächlich die Installation von rocketMQ4.4.0 vorgestellt, die im Wesentlichen in vier Schritte unterteilt ist:
1. Ziehen Sie das Rocketmq-Image.
2. Nameserv erstellen.
3. Erstellen Sie einen Brokerknoten. Ich zeige hier, wie man einen einzelnen Broker erstellt.
4. rocketMQ-Konsolendienst, der zum Verwalten der Verwaltungsschnittstelle von rocketMQ verwendet wird.

Ziehen Sie das Rocketmq-Image

Der Docker-Befehl lautet wie folgt

Docker-Pull Rocketmqinc/Rocketmq:4.4.0

Nameserv erstellen

Docker-Befehle

docker run -d --name rmqnamesrv -p 9876:9876 -v C:\data\rocketmq\logs:/root/logs -v C:\data\rocketmq\store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.4.0 sh mqnamesrv

Parameter Erklärung

Parameter beschreiben
-D Als Daemon-Prozess starten
- -Name Legen Sie den Namen des Containers fest
-P Der Port 9876 des Containers wird dem Port 9876 des lokalen Rechners zugeordnet.
-v Ordnen Sie das Verzeichnis container/root/logs (Protokolldatei) dem entsprechenden Pfad auf dem lokalen Computer zu bzw. ordnen Sie das Verzeichnis container/root/store (Datenspeicher) dem entsprechenden Pfad auf dem lokalen Computer zu.
-e Setzen Sie den maximalen Heap-Speicher des Containers auf 100000000
rocketmqinc/rocketmq:4.4.0 Bildname: Version
sch Starten Sie den Dienst mqnamesrv

Erstellen eines einzelnen Brokerknotens

Docker-Befehle

docker run -d --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 --privileged=true -v C:\data\broker\logs:/root/logs -v C:\data\broker\store:/root/store -v C:\data\broker\conf\broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:4.4.0 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

Parameter Erklärung

Parameter beschreiben
-D Als Daemon-Prozess starten
- -Name Legen Sie den Namen des Containers fest
- -Verbindung Kommunikation mit dem rmqnamesrv-Container herstellen
-p 10911:10911 Ordnen Sie den Nicht-VIP-Kommunikationsport 10911 des Containers dem lokalen Port 10911 zu.
-p 10909:10909 Ordnen Sie den VIP-Kommunikationsport 1090 des Containers dem lokalen Port 10909 zu.
–privilegiert=true Einrichten, um das Mounten privater Ordner zu ermöglichen
-v Ordnen Sie das Verzeichnis /root/logs (Protokolldatei) des Containers dem entsprechenden Pfad auf dem lokalen Computer zu/ordnen Sie das Verzeichnis /root/store (Datenspeicher) des Containers dem entsprechenden Pfad auf dem lokalen Computer zu/ordnen Sie die Konfigurationsdatei /opt/rocketmq-4.4.0/conf/broker.conf des Containers dem entsprechenden Pfad auf dem lokalen Computer zu (Sie können die Datei broker.conf auf dem lokalen Computer jedes Mal ändern und den Container neu starten).
-e „NAMESRV_ADDR=namesrv:9876“ Geben Sie die Nameserv-Adresse auf diesem Computer als 9876 an
-e „MAX_POSSIBLE_HEAP=200000000“ Setzen Sie den maximalen Heap-Speicher des Broker-Dienstes auf 200000000
rocketmqinc/rocketmq:4.4.0 Bildname: Version
sh mqbroker Starten Sie den Dienst mqbroker
-c /opt/rocketmq-4.4.0/conf/broker.conf Geben Sie die Konfigurationsdatei zum Starten des Brokers an

Konfiguration der Datei broker.conf

#Wenn viele Knoten vorhanden sind, können Sie mehrere Broker konfigurierenClusterName = DefaultCluster
#Brokername, Master und Slave verwenden denselben Namen, was ihre Master-Slave-Beziehung anzeigt brokerName = broker-a
#0 bedeutet Master, und Werte größer als 0 bedeuten verschiedene Slaves
Broker-ID = 0
#Gibt die Zeit an, zu der die Nachricht gelöscht werden soll. Der Standardwert ist 4:00 Uhr. deleteWhen = 04
#Die Zeitspanne in Stunden, in der Nachrichten auf der Festplatte gespeichert werden sollen. fileReservedTime = 48
#Es gibt drei Werte: SYNC_MASTER, ASYNC_MASTER, SLAVE; SYNC und ASYNC stellen den Mechanismus zur Synchronisierung von Daten zwischen Master und Slave dar;
Brokerrolle = ASYNC_MASTER
#Flushing-Strategie, der Wert ist: ASYNC_FLUSH, SYNC_FLUSH bedeutet synchrones Flushing und asynchrones Flushing; die SYNC_FLUSH-Nachricht gibt erst dann einen Erfolgsstatus zurück, wenn sie auf die Festplatte geschrieben wurde, ASYNC_FLUSH wird nicht benötigt;
FlushDiskType = ASYNC_FLUSH
# Legen Sie die IP-Adresse des Servers fest, auf dem sich der Broker-Knoten befindet. namesrvAddr = lokale IP-Adresse: 9876
brokerIP1 = lokale IP-Adresse

Wenn die NamesrvAddr-Konfiguration nicht zur Konfigurationsdatei broker.conf hinzugefügt wird, wird beim Ausführen des Programms der folgende Fehler gemeldet:

Ausnahme im Thread „main“ org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl-Aufruf-Timeout
bei org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:588)
bei org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1223)
bei org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1173)
bei org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:214)
bei com.baojian.mob.base.producer.SyncProducer.main(SyncProducer.java:41)
15:22:31.455 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: schließe die Verbindung zur Remote-Adresse[] Ergebnis: true
15:22:32.049 [NettyClientSelector_1] INFO RocketmqRemoting - closeChannel: schließe die Verbindung zur Remote-Adresse[] Ergebnis: true

rocketMQ-Konsolendienst

Docker-Befehle

Sie können den Befehl „docker run“ direkt ausführen, anstatt den Befehl „docker pull“ zum Abrufen des Images zu verwenden. Wenn das Image nicht vorhanden ist, wird zuerst das Image abgerufen und dann „docker run“ ausgeführt.

docker run -d --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.122.115:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8081:8080 Server/RocketMQ-Konsole-NG

Parameter Beschreibung

beschreiben veranschaulichen
-D Als Daemon-Prozess starten
- -Name Legen Sie den Namen des Containers fest
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.122.115:9876 Legen Sie die IP-Adresse des Nameserv-Dienstes fest
-Dcom.rocketmq.sendMessageWithVIPChannel=false" Senden Sie Nachrichten, ohne den VIP-Kanal zu verwenden
-p 8081:8080 Ordnen Sie Port 8080 im Container dem Port 8081 auf dem Host zu.

Nachdem der RocketMQ-Konsolenschnittstellencontainer erfolgreich ausgeführt wurde, öffnen Sie http://127.0.0.1:8081 in einem Browser, um die rokcetmq-Konsolenverwaltungsschnittstelle aufzurufen und die Clusterinformationen anzuzeigen, die darauf hinweisen, dass RocketMQ erfolgreich installiert wurde.

Bildbeschreibung hier einfügen

Fehler in der Rocketmq-Konsolenproduzentenschnittstelle

Bildbeschreibung hier einfügen

Klicken Sie auf „Suchen“ und es wird eine Fehlermeldung angezeigt, weil der Produzent nach dem Erstellen die Produktionsgruppe mit „producer.shutdown()“ schließt. Sie können sich mit dem folgenden Code abmelden.

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über die Installation von rocketMQ in Docker und das Lösen von Problemen während des Installationsvorgangs. Weitere Informationen zur Installation von rocketMQ in Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Docker-Compose-Installationsmethode für die YML-Dateikonfiguration
  • Detaillierte Schritte zur Installation von ros2 in Docker
  • Die detaillierteste Methode zur Installation von Docker auf CentOS 8
  • Detaillierter Prozess der Installation von Logstash in Docker
  • Der Prozess der Installation von Docker auf Windows Server 2016 und die aufgetretenen Probleme
  • Schnelle Installation von Docker - Schritt-für-Schritt-Anleitung

<<:  Zusammenfassung der benutzerdefinierten JavaScript-Objektmethoden

>>:  Eine kurze Diskussion über die Definition und Vorsichtsmaßnahmen von H-Tags

Artikel empfehlen

Schritte zum Verpacken und Bereitstellen des Vue-Projekts auf dem Apache-Server

In der Entwicklungsumgebung wird das Vue-Projekt ...

Einführung in den HTML-Standard für chinesische Zeichenkodierung

In HTML müssen Sie die von der Webseite verwendet...

jQuery implementiert einen einfachen Kommentarbereich

In diesem Artikel wird der spezifische Code von j...

Analyse der Informationsarchitektur von Facebook

<br />Original: http://uicom.net/blog/?p=762...

MySql-Entwicklung einer automatischen Synchronisierungstabellenstruktur

Schwachstellen bei der Entwicklung Während des En...

So implementieren Sie Polygonbrechung in Echtzeit mit Threejs

Inhaltsverzeichnis Vorwort Schritt 1: Aufbau und ...

So wählen Sie zwischen MySQL CHAR und VARCHAR

Inhaltsverzeichnis VARCHAR- und CHAR-Typen Abschl...

So konfigurieren Sie den virtuellen Nginx-Host in CentOS 7.3

Experimentelle Umgebung Eine minimal installierte...

Der Unterschied zwischen z-index: 0 und z-index: auto in CSS

Ich habe vor Kurzem etwas über Stapelkontexte gel...

CSS zum Erzielen von leuchtendem Text und ein paar JS-Spezialeffekten

Umsetzungsideen: Verwenden Sie text-shadow in CSS...

Analyse des neuen Ressourcenmanagementsystems von CocosCreator

Inhaltsverzeichnis 1. Ressourcen und Konstruktion...

Implementierung des CSS Fantastic Border Animation-Effekts

Heute habe ich auf der Blog-Site shoptalkshow ges...

VMware virtuelle Maschine installieren CentOS 8 (1905) System-Tutorial-Diagramm

Die weltberühmte virtuelle Maschinensoftware VMwa...