Migreren naar ActiveMQ
ActiveMQ (Apache ActiveMQ Artemis) is een krachtige, multi-protocol berichtmakelaar die een alternatief voor RabbitMQ voor de behandeling van berichtrijen in Adobe Commerce verstrekt.
Vanaf 2.4.8-p3, 2.4.7-p8, 2.4.6-p13 en 2.4.5-p16, steunt Adobe Commerce ActiveMQ als broker van de berichtrij. Dit verstrekt extra flexibiliteit voor installaties op-gebouw om tussen RabbitMQ en ActiveMQ te kiezen die op hun infrastructuurvereisten en deskundigheid wordt gebaseerd.
Voordat u begint
Controleer voordat u de migratie start het volgende:
- Controleer de huidige configuratie van RabbitMQ in
app/etc/env.php. - Maak een volledige back-up van de database en de codebase.
- Controleer of uw installatie voldoet aan de systeemvereisten voor ActiveMQ.
- Plan een onderhoudsvenster om de migratie te voltooien.
Migratiepad
Het migreren naar ActiveMQ is een eenvoudig proces, maar het is essentieel om ervoor te zorgen dat alle lopende berichten worden verwerkt alvorens van makelaars te veranderen.
Bij deze migratieinstructies wordt ervan uitgegaan dat Adobe Commerce de enige toepassing is die de berichtenwachtrij-broker gebruikt.
Stap 1: Plaats de site in de onderhoudsmodus
-
Plaats de plaats in Wijze van het Onderhoud :
code language-bash bin/magento maintenance:enable -
Controleren of de onderhoudsmodus is ingeschakeld:
code language-bash bin/magento maintenance:status
Stap 2: Telling van RabbitMQ-berichten controleren
Controleer voordat u verdergaat of alle berichten in RabbitMQ zijn verwerkt. Gebruik een van de volgende methoden:
Methode A: Het beheerdashboard van Konijn gebruiken
-
Open de beheerinterface van RabbitMQ op
http://<host>:15672 -
Standaardreferenties:
guest/guest -
Navigeer aan het lusje van de Opsommingen
-
Verifieer alle rijen tonen 0 berichten
Methode B: gebruik van de opdrachtregel rabbitmqctl
-
Controleer alle rijen en hun berichttellingen:
code language-bash rabbitmqctl list_queues name messages consumers {width="500"}
-
Gedetailleerde rijgegevens controleren:
code language-bash rabbitmqctl list_queues name messages messages_ready messages_unacknowledged consumers {width="500"}
Stap 3: Verwerken van lopende berichten
Als de berichten in om het even welke rijen in behandeling zijn, proces hen alvorens te werk te gaan.
-
Bekijk de lijst met beschikbare consumenten:
code language-bash bin/magento queue:consumers:list -
Consumenten verwerken als groep of per wachtrij met afzonderlijke berichten:
-
de consumenten van het Proces als groep
code language-bash bin/magento cron:run --group=consumersnote note NOTE Als de uitsnede al op uw systeem wordt uitgevoerd, hoeft u bin/magento cron:run --group=consumersniet handmatig uit te voeren. In plaats daarvan, verifieer dat de berichten door de berichttellingen te controleren gebruikend de bevelen van Stap 2 worden verwerkt. -
Proces een specifieke berichtrij
code language-bash bin/magento queue:consumers:start <consumer_name> --max-messages=<number>Bijvoorbeeld om asynchrone bewerkingen te verwerken:
code language-bash bin/magento queue:consumers:start async.operations.all --max-messages=1000note note NOTE De parameter --max-messagesbeperkt het aantal berichten dat moet worden verwerkt voordat de consument stopt. Pas deze waarde aan op basis van de grootte van de wachtrij. -
het berichtverwerking van de Monitor
Ononderbroken tellen van het controlebericht tot alle rijen leeg zijn:
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$'"
-
Stap 4: controleer of alle berichten zijn verwerkt
Alvorens aan de volgende stap te werk te gaan, zorg alle rijen tonen 0 berichten. Voer de verificatieopdrachten opnieuw uit vanuit Stap 2.
Stap 5: stoppen van consumenten en banen in de bouwsector
-
Alle actieve gebruikers in de wachtrij met berichten stoppen:
code language-bash # If using supervisor supervisorctl stop all # Or manually kill consumer processes pkill -f "queue:consumers:start" -
Snijtaken uitschakelen:
code language-bash bin/magento cron:remove -
Controleren of snijtaken zijn verwijderd:
code language-bash crontab -l
Stap 6: Back-up maken van huidige configuratie
Maak een back-up van uw huidige configuratie:
cp app/etc/env.php app/etc/env.php.backup.rabbitmq
Stap 7: Optioneel verwijderen van RabbitMQ
U kunt RabbitMQ verwijderen als dit niet meer nodig is.
Stap 8: ActiveMQ installeren en configureren in Adobe Commerce
Om installatie ActiveMQ en configuratietaken zoals het vormen van het protocol van STOMP te voltooien en de verbinding te verifiëren, zie de Gids van de Installatie en van de Configuratie .
Stap 9: Cron-taken opnieuw installeren
-
Nadat de tests met succes zijn voltooid, installeert u de snijtaken opnieuw:
code language-bash bin/magento cron:install -
Controleren of uitsnijdtaken zijn gepland:
code language-bash crontab -l
Stap 10: Onderhoudsmodus uitschakelen
-
Nadat u hebt gecontroleerd of alles correct werkt, schakelt u de onderhoudsmodus uit:
code language-bash bin/magento maintenance:disable -
Controleren of de onderhoudsmodus is uitgeschakeld:
code language-bash bin/magento maintenance:status
Stap 11: Het systeem bewaken
Controleer uw systeem 24-48 uur na migratie om ervoor te zorgen dat alle rijverrichtingen correct functioneren:
- Controleer regelmatig de Console van het Web ActiveMQ voor berichtproductie
- Toepassingslogboeken controleren op fouten met betrekking tot wachtrijen
- Verifieer dat de asynchrone verrichtingen (config bewaart, uitvoert, etc.) werken
- Snijlogboeken controleren om ervoor te zorgen dat consumenten actief zijn
# 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"
Terugdraaien
Als er problemen optreden tijdens of na de migratie, kunt u terugdraaien naar RabbitMQ:
-
Onderhoudsmodus inschakelen:
code language-bash bin/magento maintenance:enable -
Stop alle consumenten en schakel de kroon uit:
code language-bash pkill -f "queue:consumers:start" bin/magento cron:remove -
De vorige configuratie herstellen:
code language-bash cp app/etc/env.php.backup.rabbitmq app/etc/env.php -
RabbitMQ starten (indien gestopt):
code language-bash sudo systemctl start rabbitmq-server -
Cache wissen:
code language-bash bin/magento cache:flush -
Uitsnijden opnieuw installeren:
code language-bash bin/magento cron:install -
Onderhoudsmodus uitschakelen:
code language-bash bin/magento maintenance:disable
Na het voltooien van de migratie zijn geen verdere wijzigingen in de configuratiewaarde nodig.