Migration zu ActiveMQ
ActiveMQ (Apache ActiveMQ Artemis) ist ein leistungsstarker Multiprotokoll-Nachrichtenbroker, der eine Alternative zu RabbitMQ für die Verarbeitung von Nachrichtenwarteschlangen in Adobe Commerce bietet.
Ab den Versionen 2.4.8-p3, 2.4.7-p8, 2.4.6-p13 und 2.4.5-p16 unterstützt Adobe Commerce ActiveMQ als Nachrichtenwarteschlangen-Broker. Dies bietet zusätzlichen Spielraum für lokale Installationen, die basierend auf ihren Infrastrukturanforderungen und ihrem Fachwissen zwischen RabbitMQ und ActiveMQ wählen können.
Bevor Sie beginnen
Stellen Sie vor Beginn der Migration Folgendes sicher:
- Überprüfen Sie Ihre aktuelle RabbitMQ-Konfiguration in
app/etc/env.php. - Erstellen Sie eine vollständige Sicherung Ihrer Datenbank und Codebasis.
- Stellen Sie sicher, dass Ihre Installation die Systemanforderungen für ActiveMQ erfüllt.
- Planen Sie ein Wartungsfenster, um die Migration abzuschließen.
Migrationspfad
Die Migration zu ActiveMQ ist ein unkomplizierter Prozess, aber es ist wichtig sicherzustellen, dass alle ausstehenden Nachrichten verarbeitet werden, bevor der Broker gewechselt wird.
Bei diesen Migrationsanweisungen wird davon ausgegangen, dass Adobe Commerce die einzige Anwendung ist, die den Nachrichtenwarteschlangen-Broker verwendet.
Schritt 1: Setzen Sie die Site in den Wartungsmodus
-
Setzen Sie die Site in Wartungsmodus:
code language-bash bin/magento maintenance:enable -
Überprüfen Sie, ob der Wartungsmodus aktiviert ist:
code language-bash bin/magento maintenance:status
Schritt 2: RabbitMQ-Nachrichtenanzahl überprüfen
Bevor Sie fortfahren, überprüfen Sie, ob alle Nachrichten in RabbitMQ verarbeitet wurden. Verwenden Sie eine der folgenden Methoden:
Methode A: Verwenden des Kaninchen-MQ-Management-Dashboards
-
Zugriff auf die RabbitMQ-Verwaltungsoberfläche unter
http://<host>:15672 -
Standardmäßige Anmeldedaten:
guest/guest -
Navigieren Sie zur Registerkarte Warteschlangen.
-
Überprüfen, ob alle Warteschlangen 0 Nachrichten anzeigen
Methode B: Verwenden der Befehlszeile rabbitmqctl
-
Überprüfen Sie alle Warteschlangen und ihre Nachrichtenanzahl:
code language-bash rabbitmqctl list_queues name messages consumers {width="500"}
-
Überprüfen Sie die detaillierten Warteschlangeninformationen:
code language-bash rabbitmqctl list_queues name messages messages_ready messages_unacknowledged consumers {width="500"}
Schritt 3: Ausstehende Nachrichten verarbeiten
Wenn Nachrichten in Warteschlangen ausstehen, verarbeiten Sie sie, bevor Sie fortfahren.
-
Abrufen der Liste der verfügbaren Verbraucher:
code language-bash bin/magento queue:consumers:list -
Verbraucher als Gruppe oder nach einzelner Nachrichtenwarteschlange verarbeiten:
-
Verbraucher als Gruppe verarbeiten
code language-bash bin/magento cron:run --group=consumersnote note NOTE Wenn Cron bereits in Ihrem System ausgeführt wird, müssen Sie bin/magento cron:run --group=consumersnicht manuell ausführen. Überprüfen Sie stattdessen mithilfe der Befehle aus Schritt 2, ob Nachrichten verarbeitet werden, indem Sie die Anzahl der Nachrichten überprüfen. -
Verarbeiten Sie eine bestimmte Nachrichtenwarteschlange
code language-bash bin/magento queue:consumers:start <consumer_name> --max-messages=<number>So verarbeiten Sie beispielsweise asynchrone Vorgänge:
code language-bash bin/magento queue:consumers:start async.operations.all --max-messages=1000note note NOTE Der Parameter --max-messagesbegrenzt die Anzahl der zu verarbeitenden Nachrichten, bevor der Verbraucher stoppt. Passen Sie diesen Wert basierend auf Ihrer Warteschlangengröße an. -
Überwachen der Nachrichtenverarbeitung
Kontinuierliche Überprüfung der Nachrichtenanzahl, bis alle Warteschlangen leer sind:
code language-bash # Check every few seconds until 0 messages remain watch -n 5 "rabbitmqctl list_queues name messages | grep -v '^Listing' | grep -v '0$'"
-
Schritt 4: Überprüfen, ob alle Nachrichten verarbeitet werden
Bevor Sie mit dem nächsten Schritt fortfahren, stellen Sie sicher dass „Alle Warteschlangen 0 Nachrichten anzeigen. Führen Sie die Überprüfungsbefehle aus Schritt 2 erneut aus.
Schritt 5: Verbraucher und Cron-Jobs stoppen
-
Alle ausgeführten Nachrichtenwarteschlangen-Verbraucher anhalten:
code language-bash # If using supervisor supervisorctl stop all # Or manually kill consumer processes pkill -f "queue:consumers:start" -
Cron-Aufträge deaktivieren:
code language-bash bin/magento cron:remove -
Überprüfen Sie, ob Cron-Aufträge entfernt werden:
code language-bash crontab -l
Schritt 6: Aktuelle Konfiguration sichern
Erstellen Sie eine Sicherungskopie Ihrer aktuellen Konfiguration:
cp app/etc/env.php app/etc/env.php.backup.rabbitmq
Schritt 7: Optional RabbitMQ deinstallieren
Sie können RabbitMQ deinstallieren, wenn es nicht mehr benötigt wird.
Schritt 8: Installieren und Konfigurieren von ActiveMQ in Adobe Commerce
Informationen zum Durchführen von ActiveMQ-Installations- und Konfigurationsaufgaben, wie z. B. Konfigurieren des STOMP-Protokolls und Überprüfen der Verbindung, finden Sie „Installations- und Konfigurationshandbuch.
Schritt 9: Cron-Aufträge neu installieren
-
Installieren Sie nach erfolgreichem Abschluss des Tests die Cron-Aufträge neu:
code language-bash bin/magento cron:install -
Überprüfen, ob Cron-Aufträge geplant sind:
code language-bash crontab -l
Schritt 10: Deaktivieren des Wartungsmodus
-
Nachdem Sie überprüft haben, ob alles ordnungsgemäß funktioniert, deaktivieren Sie den Wartungsmodus:
code language-bash bin/magento maintenance:disable -
Stellen Sie sicher, dass der Wartungsmodus deaktiviert ist:
code language-bash bin/magento maintenance:status
Schritt 11: Überwachen des Systems
Überwachen Sie Ihr System für 24-48 Stunden nach der Migration, um sicherzustellen, dass alle Warteschlangenvorgänge ordnungsgemäß funktionieren:
- Überprüfen Sie die ActiveMQ-Web-Konsole regelmäßig auf den Nachrichtendurchsatz.
- Überwachen von Anwendungsprotokollen auf Warteschlangenfehler
- Überprüfen, ob asynchrone Vorgänge (Speichern der Konfiguration, Exporte usw.) funktionieren
- Cron-Protokolle überprüfen, um sicherzustellen, dass Verbraucher
# Monitor system logs for queue activity
tail -f var/log/system.log | grep -i queue
# Monitor cron logs
tail -f var/log/cron.log
# Check running consumer processes
ps aux | grep "queue:consumers:start"
Rollback
Wenn während oder nach der Migration Probleme auftreten, können Sie ein Rollback auf RabbitMQ durchführen:
-
Wartungsmodus aktivieren:
code language-bash bin/magento maintenance:enable -
Alle Verbraucher stoppen und Cron deaktivieren:
code language-bash pkill -f "queue:consumers:start" bin/magento cron:remove -
Wiederherstellen der vorherigen Konfiguration:
code language-bash cp app/etc/env.php.backup.rabbitmq app/etc/env.php -
RabbitMQ starten (falls gestoppt):
code language-bash sudo systemctl start rabbitmq-server -
Cache löschen:
code language-bash bin/magento cache:flush -
Cron neu installieren:
code language-bash bin/magento cron:install -
Wartungsmodus deaktivieren:
code language-bash bin/magento maintenance:disable
Nach Abschluss der Migration sind keine weiteren Änderungen des Konfigurationswerts erforderlich.