Migrazione ad ActiveMQ
ActiveMQ (Apache ActiveMQ Artemis) è un broker di messaggi multiprotocollo ad alte prestazioni che fornisce un’alternativa a RabbitMQ per la gestione delle code di messaggi in Adobe Commerce.
A partire da 2.4.8-p3, 2.4.7-p8, 2.4.6-p13 e 2.4.5-p16, Adobe Commerce supporta ActiveMQ come broker della coda di messaggi. Questo offre maggiore flessibilità alle installazioni on-premise per scegliere tra RabbitMQ e ActiveMQ in base ai requisiti e alle competenze dell'infrastruttura.
Prima di iniziare
Prima di avviare la migrazione, verifica quanto segue:
- Esaminare la configurazione corrente di RabbitMQ in
app/etc/env.php. - Backup completo del database e della base di codice.
- Verificare che l'installazione soddisfi i requisiti di sistema per ActiveMQ.
- Pianifica una finestra di manutenzione per completare la migrazione.
Percorso di migrazione
La migrazione ad ActiveMQ è un processo semplice, ma è essenziale assicurarsi che tutti i messaggi in sospeso vengano elaborati prima di cambiare broker.
Queste istruzioni di migrazione presuppongono che Adobe Commerce sia l’unica applicazione che utilizza il broker della coda di messaggi.
Passaggio 1: attivare la modalità di manutenzione per il sito
-
Posiziona il sito in Modalità manutenzione:
code language-bash bin/magento maintenance:enable -
Verifica che la modalità di manutenzione sia abilitata:
code language-bash bin/magento maintenance:status
Passaggio 2: controllare il conteggio dei messaggi RabbitMQ
Prima di procedere, verificare che tutti i messaggi in RabbitMQ siano stati elaborati. Utilizza uno dei seguenti metodi:
Metodo A: utilizzo del dashboard di gestione di RabbitMQ
-
Accedere all'interfaccia utente di gestione di RabbitMQ all'indirizzo
http://<host>:15672 -
Credenziali predefinite:
guest/guest -
Passa alla scheda Code
-
Verifica che tutte le code mostrino 0 messaggi
Metodo B: Utilizzo della riga di comando rabbitmqctl
-
Controlla tutte le code e il numero dei messaggi:
code language-bash rabbitmqctl list_queues name messages consumers {width="500"}
-
Controllare le informazioni dettagliate sulla coda:
code language-bash rabbitmqctl list_queues name messages messages_ready messages_unacknowledged consumers {width="500"}
Passaggio 3: elaborare i messaggi in sospeso
Se i messaggi sono in sospeso in una coda, elaborarli prima di procedere.
-
Ottieni l’elenco dei consumatori disponibili:
code language-bash bin/magento queue:consumers:list -
Elabora i consumer come gruppo o per singola coda di messaggi:
-
Elabora consumatori come gruppo
code language-bash bin/magento cron:run --group=consumersnote note NOTE Se cron è già in esecuzione nel sistema, non è necessario eseguire bin/magento cron:run --group=consumersmanualmente. Verifica invece che i messaggi vengano elaborati controllando il conteggio dei messaggi utilizzando i comandi del passaggio 2. -
Elabora una coda messaggi specifica
code language-bash bin/magento queue:consumers:start <consumer_name> --max-messages=<number>Ad esempio, per elaborare le operazioni asincrone:
code language-bash bin/magento queue:consumers:start async.operations.all --max-messages=1000note note NOTE Il parametro --max-messageslimita il numero di messaggi da elaborare prima dell'arresto del consumer. Regola questo valore in base alla dimensione della coda. -
Monitorare l'elaborazione dei messaggi
Controlla continuamente i conteggi dei messaggi fino a quando tutte le code non sono vuote:
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$'"
-
Passaggio 4: verifica che tutti i messaggi siano elaborati
Prima di procedere al passaggio successivo, verificare che tutte le code visualizzino 0 messaggi. Esegui nuovamente i comandi di verifica dal passaggio 2.
Passaggio 5: arrestare i processi relativi a consumatori e cron
-
Arresta tutti i consumer della coda di messaggi in esecuzione:
code language-bash # If using supervisor supervisorctl stop all # Or manually kill consumer processes pkill -f "queue:consumers:start" -
Disabilita processi cron:
code language-bash bin/magento cron:remove -
Verificare che i processi cron siano rimossi:
code language-bash crontab -l
Passaggio 6: eseguire il backup della configurazione corrente
Crea un backup della configurazione corrente:
cp app/etc/env.php app/etc/env.php.backup.rabbitmq
Passaggio 7: disinstallare facoltativamente RabbitMQ
Se non è più necessario, è possibile disinstallare RabbitMQ.
Passaggio 8: installare e configurare ActiveMQ in Adobe Commerce
Per completare le attività di installazione e configurazione di ActiveMQ, ad esempio la configurazione del protocollo STOMP e la verifica della connessione, vedere la Guida all'installazione e alla configurazione.
Passaggio 9: reinstallare i processi cron
-
Al termine del test, reinstallare i processi cron:
code language-bash bin/magento cron:install -
Verifica che i processi cron siano pianificati:
code language-bash crontab -l
Passaggio 10: disabilitare la modalità di manutenzione
-
Dopo aver verificato che tutto funzioni correttamente, disattiva la modalità di manutenzione:
code language-bash bin/magento maintenance:disable -
Verifica che la modalità di manutenzione sia disabilitata:
code language-bash bin/magento maintenance:status
Passaggio 11: Monitorare il sistema
Monitora il sistema per 24-48 ore dopo la migrazione per verificare che tutte le operazioni in coda funzionino correttamente:
- Controllare regolarmente la velocità effettiva dei messaggi nella console Web ActiveMQ
- Monitorare i registri dell’applicazione per individuare eventuali errori relativi alla coda
- Verifica che le operazioni asincrone (salvataggio configurazione, esportazioni e così via) funzionino
- Controlla i registri cron per assicurarti che i consumatori siano in esecuzione
# 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
Se si verificano problemi durante o dopo la migrazione, puoi eseguire il rollback a RabbitMQ:
-
Abilita modalità di manutenzione:
code language-bash bin/magento maintenance:enable -
Interrompi tutti i consumer e disattiva cron:
code language-bash pkill -f "queue:consumers:start" bin/magento cron:remove -
Ripristina la configurazione precedente:
code language-bash cp app/etc/env.php.backup.rabbitmq app/etc/env.php -
Avviare RabbitMQ (se interrotto):
code language-bash sudo systemctl start rabbitmq-server -
Cancella cache:
code language-bash bin/magento cache:flush -
Reinstalla cron:
code language-bash bin/magento cron:install -
Disattiva modalità di manutenzione:
code language-bash bin/magento maintenance:disable
Al termine della migrazione non sono necessarie ulteriori modifiche al valore di configurazione.