Message queues στο Magento: όταν σταματούν οι consumers, οι παραγγελίες μαζεύονται
Δεν γίνονται όλα όσα κάνει το Magento σε μια αγορά μέσα σε εκείνο το αίτημα. Κάποια δουλειά μπαίνει σε ουρά μηνυμάτων για να την επεξεργαστούν αργότερα οι consumers. Όταν σταματούν, το checkout δουλεύει ακόμα — και οι συνέπειες φαίνονται μετά.

Τι τρέχει σε ουρές
Ανάλογα με την έκδοση και τα modules: ενημερώσεις διαθέσιμης ποσότητας, μαζικές ενέργειες, exports, imports προϊόντων, και διασυνδέσεις για κάποια modules πληρωμών, ERP και marketplaces. Οι consumers τρέχουν είτε μέσω cron (`consumers_runner`) είτε ως μόνιμες διεργασίες υπό supervisor. Δείτε την τεκμηρίωση για message queues.
Αν σταματήσει το cron, σταματούν και οι consumers που ξεκινά — άλλος ένας λόγος να παρακολουθείτε cron και indexers.
Τι πάει στραβά
Η διαθέσιμη ποσότητα σταματά να ενημερώνεται, οπότε προϊόντα υπερπωλούνται ή δείχνουν λάθος «εξαντλημένο» — το εξηγούμε στο salable quantity του MSI. Οι παραγγελίες δεν φτάνουν στο ERP. Μαζικές αλλαγές τιμών δεν εφαρμόζονται ποτέ, οπότε το καλάθι δείχνει παλιές τιμές.
Με RabbitMQ, ένας broker που σταμάτησε ή γεμάτος δίσκος σημαίνει ότι τα μηνύματα δεν γίνονται καν δεκτά, και ο κώδικας που τα δημοσιεύει μπορεί να πετάξει σφάλμα στη μέση του checkout.
Παρακολούθηση των ουρών
Ειδοποιήστε για το μέγεθος της ουράς και για μηνύματα παλαιότερα από λίγα λεπτά, και βεβαιωθείτε ότι οι consumers ξαναξεκινούν μετά από deploy. Ελέγξτε την υγεία του broker αν χρησιμοποιείτε RabbitMQ.
Συνδυάστε το με έναν end-to-end έλεγχο που επιβεβαιώνει την τιμή στο καλάθι και ολοκληρώνει αγορά: πιάνει το ορατό στον πελάτη αποτέλεσμα μιας κολλημένης ουράς ακόμη κι όταν δεν έχετε ακόμη μετρήσεις ουρών.
Ελέγξτε το δικό σας κατάστημα τώρα με το δωρεάν τεστ checkout Magento: περνά το checkout σε πραγματικό browser, Luma ή Hyvä, και δείχνει το βήμα όπου σταματά.
Για παραγγελίες που μένουν σε Pending Payment, δείτε το Magento: παραγγελίες κολλημένες σε pending payment.
Πώς τρέχουν οι consumers: cron ή supervisor
Από προεπιλογή το Magento ξεκινά τους consumers από το cron μέσω του `consumers_runner`, με όρια από το `cron_consumers_runner` στο `app/etc/env.php` (`max_messages`, `single_thread`). Για μικρά καταστήματα αρκεί· τα πολυσύχναστα συνήθως τους τρέχουν με supervisor ή systemd, ώστε να ξαναξεκινούν αν κρασάρουν και να μην τους σκοτώνει ο επόμενος κύκλος cron.
Δείτε τους με `bin/magento queue:consumers:list` και ξεκινήστε έναν χειροκίνητα με `bin/magento queue:consumers:start <name>` για να δείτε τα σφάλματά του. Με RabbitMQ, το management UI δείχνει το βάθος της ουράς· με την ουρά MySQL, κοιτάξτε τον πίνακα `queue_message_status`.
Σημάδια ότι κόλλησε ένας consumer
Μαζικές ενέργειες στο admin που μένουν «σε εξέλιξη», αλλαγές τιμής ή αποθέματος που δεν φτάνουν ποτέ στο κατάστημα, και exports που δεν τελειώνουν είναι τα συνηθισμένα συμπτώματα. Στο checkout, οι κρατήσεις αποθέματος και τα async emails παραγγελίας καθυστερούν, κάτι που φαίνεται ως λάθος διαθέσιμη ποσότητα ή email επιβεβαίωσης που λείπουν.
Βάλτε ειδοποίηση όταν το βάθος της ουράς μεγαλώνει για πάνω από λίγα λεπτά, όχι μόνο όταν η διεργασία ζει. Για την πλευρά των παραγγελιών δείτε και τα παραγγελίες κολλημένες σε pending payment και salable quantity στο MSI.
Συχνές ερωτήσεις
Πώς βλέπω τους consumers του Magento;
Με bin/magento queue:consumers:list για τη λίστα και bin/magento queue:consumers:start <όνομα> για να ξεκινήσει ένας.
Ποιος ξεκινά τους consumers του Magento;
Το cron μέσω του consumers_runner, εκτός αν το cron_consumers_runner είναι απενεργοποιημένο στο env.php· με RabbitMQ πολλές ομάδες τους τρέχουν με supervisor.
Τι χαλάει όταν σταματούν οι consumers;
Ενημερώσεις salable quantity, ασύγχρονη ολοκλήρωση παραγγελιών, exports και άλλη δουλειά σε ουρά μαζεύονται, οπότε απόθεμα και παραγγελίες αποκλίνουν.