[Solo PaaS]{class="badge informative" title="Applicabile solo ai progetti Adobe Commerce on Cloud (infrastruttura PaaS gestita da Adobe) e ai progetti on-premise."}

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:

  1. Esaminare la configurazione corrente di RabbitMQ in app/etc/env.php.
  2. Backup completo del database e della base di codice.
  3. Verificare che l'installazione soddisfi i requisiti di sistema per ActiveMQ.
  4. 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

  1. Posiziona il sito in Modalità manutenzione:

    code language-bash
    bin/magento maintenance:enable
    
  2. 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

  1. Accedere all'interfaccia utente di gestione di RabbitMQ all'indirizzo http://<host>:15672

  2. Credenziali predefinite: guest/guest

  3. Passa alla scheda Code

  4. Verifica che tutte le code mostrino 0 messaggi

    Dashboard di gestione RabbitMQ

Metodo B: Utilizzo della riga di comando rabbitmqctl

  1. Controlla tutte le code e il numero dei messaggi:

    code language-bash
    rabbitmqctl list_queues name messages consumers
    

    Output CLI RabbitMQ {width="500"}

  2. Controllare le informazioni dettagliate sulla coda:

    code language-bash
    rabbitmqctl list_queues name messages messages_ready messages_unacknowledged consumers
    

    Output dettagliato CLI di RabbitMQ {width="500"}

Passaggio 3: elaborare i messaggi in sospeso

Se i messaggi sono in sospeso in una coda, elaborarli prima di procedere.

  1. Ottieni l’elenco dei consumatori disponibili:

    code language-bash
    bin/magento queue:consumers:list
    
  2. Elabora i consumer come gruppo o per singola coda di messaggi:

    • Elabora consumatori come gruppo

      code language-bash
      bin/magento cron:run --group=consumers
      
      note note
      NOTE
      Se cron è già in esecuzione nel sistema, non è necessario eseguire bin/magento cron:run --group=consumers manualmente. 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=1000
      
      note note
      NOTE
      Il parametro --max-messages limita 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.

WARNING
Non procedere al passaggio successivo se alcuni messaggi rimangono non elaborati. Se cambi operatore mentre i messaggi sono ancora in sospeso, potrebbe verificarsi una perdita di dati.

Passaggio 5: arrestare i processi relativi a consumatori e cron

  1. 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"
    
  2. Disabilita processi cron:

    code language-bash
    bin/magento cron:remove
    
  3. 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

  1. Al termine del test, reinstallare i processi cron:

    code language-bash
    bin/magento cron:install
    
  2. Verifica che i processi cron siano pianificati:

    code language-bash
    crontab -l
    

Passaggio 10: disabilitare la modalità di manutenzione

  1. Dopo aver verificato che tutto funzioni correttamente, disattiva la modalità di manutenzione:

    code language-bash
    bin/magento maintenance:disable
    
  2. 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:

  1. Abilita modalità di manutenzione:

    code language-bash
    bin/magento maintenance:enable
    
  2. Interrompi tutti i consumer e disattiva cron:

    code language-bash
    pkill -f "queue:consumers:start"
    bin/magento cron:remove
    
  3. Ripristina la configurazione precedente:

    code language-bash
    cp app/etc/env.php.backup.rabbitmq app/etc/env.php
    
  4. Avviare RabbitMQ (se interrotto):

    code language-bash
    sudo systemctl start rabbitmq-server
    
  5. Cancella cache:

    code language-bash
    bin/magento cache:flush
    
  6. Reinstalla cron:

    code language-bash
    bin/magento cron:install
    
  7. Disattiva modalità di manutenzione:

    code language-bash
    bin/magento maintenance:disable
    

Al termine della migrazione non sono necessarie ulteriori modifiche al valore di configurazione.

recommendation-more-help
83a60e0e-8849-4685-a8cd-c129ecd795ea