Ich habe vor Kurzem gelernt, RocketMQ zu verwenden, und musste einen RocketMQ-Server erstellen. Dieser Artikel beschreibt hauptsächlich den RocketMQ-Erstellungsprozess und einige der dabei auftretenden Fallstricke. VorbereitungVor dem Erstellen müssen wir einige Vorbereitungen treffen. Hier müssen wir Docker verwenden, um den Dienst zu erstellen, daher müssen wir Docker im Voraus installieren. Da RocketMQ außerdem die Bereitstellung eines Brokers und eines Nameservers erfordert und die separate Bereitstellung problematisch ist, wird hier Docker-Compose verwendet. Das RocketMQ-Architekturdiagramm sieht wie folgt aus: Darüber hinaus müssen Sie auch eine Webvisualisierungskonsole erstellen, um den MQ-Dienststatus und den Nachrichtenverbrauch zu überwachen. Hier wird die Rocketmq-Konsole verwendet und das Programm wird auch mit Docker installiert. Bereitstellungsprozess Zuerst benötigen wir das Rocketmq-Docker-Image. Hier können wir es selbst erstellen, direkt [email protected]:apache/rocketmq-docker.git abrufen und dann das Image erstellen. Sie können das offizielle Image auch direkt auf Docker Hub verwenden, der Imagename lautet: Erstellen Sie als Nächstes die MQ-Konfigurationsdatei brokerClusterName = StandardCluster Brokername = Broker-A Broker-ID = 0 löschenWenn = 04 DateiReservierteZeit = 48 Brokerrolle = ASYNC_MASTER FlushDiskType = ASYNC_FLUSH # Wenn das lokale Programm den Cloud-Host mq aufruft, muss dies auf die Cloud-Host-IP eingestellt werden brokerIP1=10.10.101.80 Erstellen Sie die folgenden Ordner: Version: '2' Leistungen: Nameserver: Bild: rocketmqinc/rocketmq Containername: rmqnamesrv Häfen: -9876:9876 Bände: – /opt/rocketmq/logs:/home/rocketmq/logs - /opt/rocketmq/store:/home/rocketmq/store Befehl: sh mqnamesrv Makler: Bild: rocketmqinc/rocketmq Containername: rmqbroker Häfen: - 10909:10909 - 10911:10911 - 10912:10912 Bände: – /opt/rocketmq/logs:/home/rocketmq/logs - /opt/rocketmq/store:/home/rocketmq/store - /opt/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf #Befehl: sh mqbroker -n namesrv:9876 Befehl: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf hängt ab von: -namerv Umfeld: -JAVA_HOME=/usr/lib/jvm/jre Konsole: Bild: styletang/rocketmq-console-ng Containername: rocketmq-console-ng Häfen: -8087:8080 hängt ab von: -namerv Umfeld: -JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rmqnamesrv:9876 - Dcom.rocketmq.sendMessageWithVIPChannel=false Notiz Es ist hier zu beachten, dass sowohl der RocketMQ-Broker als auch die RokcetMQ-Konsole eine Verbindung zum RokcetMQ-Nameserver herstellen müssen und Sie die IP des Nameservers kennen müssen. Nach der Verwendung von Docker-Compose werden die oben genannten drei Docker-Container zusammen orchestriert. Sie können den Containernamen direkt anstelle der Container-IP verwenden, z. B. den Nameserver-Containernamen rmqnamesrv. Führen Sie nach Abschluss der Konfiguration docker-compose up aus, um die drei Container zu starten. Rufen Sie nach dem erfolgreichen Start die IP-Adresse 8087 auf und überprüfen Sie die externe MQ-Konsole. Wenn Sie die folgenden Informationen sehen, wurde der RocketMQ-Dienst erfolgreich gestartet. Erste Erfahrungen mit RocketMQ Hier verwenden wir Springboot, um schnell mit MQ zu beginnen, und verwenden das Modul <!--Abhängigkeiten in pom.xml hinzufügen--> <Abhängigkeit> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.0.3</version> </Abhängigkeit> Der Consumer-Service-Absender ist wie folgt konfiguriert: ## Anwendungseigenschaften rocketmq.name-server=ip:9876 rocketmq.producer.group=meine-Gruppe Das Verfahren für den Absender des Verbraucherservice läuft wie folgt ab: @SpringBootAnwendung öffentliche Klasse ProducerApplication implementiert CommandLineRunner { @Ressource privates RocketMQTemplate rocketMQTemplate; öffentliche statische void main(String[] args){ SpringApplication.run(ProducerApplication.class, args); } public void run(String...args) löst Exception aus { rocketMQTemplate.convertAndSend("test-topic-1", "Hallo Welt!"); rocketMQTemplate.send("test-topic-1", MessageBuilder.withPayload("Hallo Welt! Ich komme von Spring Message").build()); } } Die Konfiguration des Nachrichtenkonsumenten sieht wie folgt aus: ## Anwendungseigenschaften rocketmq.name-server=ip:9876 Der Nachrichtenkonsument führt das folgende Programm aus: @SpringBootAnwendung öffentliche Klasse ConsumerApplication{ öffentliche statische void main(String[] args){ SpringApplication.run(ConsumerApplication.class, args); } @Slf4j @Service @RocketMQMessageListener(Thema = "Testthema-1", Verbrauchergruppe = "Mein Verbraucher_Testthema-1") öffentliche statische Klasse MyConsumer1 implementiert RocketMQListener<String> { public void onMessage(String message) { log.info("empfangene Nachricht: {}", Nachricht); } } } Verwandte Fragen Beim Absender der Nachricht Diese Ausnahme wird dadurch verursacht, dass die Broker-IP nicht richtig eingestellt ist. Melden Sie sich bei der MQ-Servicekonsole an, um die Broker-Konfigurationsinformationen anzuzeigen. Über Die MQ-Konsole kann die MQ-Dienstinformationen nicht normal anzeigen. Dieses Problem wird hauptsächlich durch falsche Nameserver-IP-Einstellungen verursacht. Überprüfen Sie die Betriebs- und Wartungsseite der MQ-Konsole, um die aktuell verbundenen Nameserver-Adressinformationen anzuzeigen. Sie können sehen, dass hier die Adresse Hier müssen Sie die Umgebungsvariablen in Docker konfigurieren. Die Konfiguration ist wie folgt: -JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rmqnamesrv:9876 Hilfedokumentation RocketMQ-Docker Autor:Leo_wl Quelle: http://www.cnblogs.com/Leo_wl/ Dies ist das Ende dieses Artikels über das Implementierungsbeispiel der Docker RocketMQ-Bereitstellung. Weitere relevante Inhalte zur Docker RocketMQ-Bereitstellung 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:
|
<<: Sollte ich für das mobile Web-WAP Bootstrap oder jQuery Mobile verwenden?
>>: So verstehen Sie den Unterschied zwischen ref toRef und toRefs in Vue3
1. Problembeschreibung Heute muss ich die Systemp...
HTML und CSS 1. Verständnis und Kenntnisse von WE...
MySQL-Escape Escape bedeutet die ursprüngliche Se...
Inhaltsverzeichnis 1. Einleitung 2. Einführung in...
Inhaltsverzeichnis 1. Arrays zusammenführen 2. Ar...
Ich möchte einen Artikel von Zhang Xinxu zitieren...
Inhaltsverzeichnis Problembeschreibung: Installat...
Der Fehler „mysql ist kein interner Befehl“ tritt...
empfehlen: Detailliertes Tutorial zur Registrieru...
Da die Anzahl der Besuche auf der Website des Unt...
In diesem Artikel wird eine detaillierte Erläuter...
(1) HTML: HyperText Markup Language, die im Wesen...
In diesem Artikel gehen wir davon aus, dass Sie b...
Inhaltsverzeichnis Benutzerdefinierte Vue-Direkti...
Ein Systemadministrator kann mehrere Server gleic...