Manage message queues
You can manage message queues from the command line using cron jobs or an external process manager to ensure that consumers are retrieving messages. This applies to all supported message brokers including RabbitMQ (AMQP), Apache ActiveMQ Artemis (STOMP), and MySQL adapter.
Process management
Cron jobs are the default mechanism to restart consumers. Processes started by cron consume the specified number of messages and then terminate. Rerunning cron restarts the consumer.
The following example shows the crontab configuration for running consumers:
/app/code/Magento/MessageQueue/etc/crontab.xml
...
<job name="consumers_runner" instance="Magento\MessageQueue\Model\Cron\ConsumersRunner" method="run">
<schedule>* * * * *</schedule>
</job>
...
cron schedules according to your business needs.cron with Commerce.You can also use a process manager such as to monitor the status of processes. The manager can use the command line to restart the processes as needed.
Configuration
Behavior by default
- Cron job
consumers_runneris enabled - Cron job
consumers_runnerruns all defined consumers - Each consumer processes 10000 messages and then terminates
CRON_CONSUMERS_RUNNER to configure the consumers_runner cron job.Specific configuration
Edit the /app/etc/env.php file to configure the cron job consumers_runner.
...
'cron_consumers_runner' => [
'cron_run' => false,
'max_messages' => 20000,
'consumers' => [
'consumer1',
'consumer2',
],
'multiple_processes' => [
'consumer1' => 4
]
],
...
-
cron_run- A boolean value that enables or disables theconsumers_runnercron job (default =true). -
max_messages- The maximum number of messages each consumer must process before terminating (default =10000). Although we do not recommend it, you can use 0 to prevent the consumer from terminating. Seeconsumers_wait_for_messagesto configure how consumers process messages from the message queue. -
consumers- An array of strings specifying which consumers to run. An empty array runs all consumers. -
multiple_processes- An array of key-value pairs specifying which consumer to run in how many processes. Supported in Commerce 2.4.4 or greater.note info INFO It is not recommended to run multiple consumers on a MySQL-operated queue. See for more information about switching to AMQP (RabbitMQ) or STOMP (ActiveMQ Artemis). note info INFO If your 51黑料不打烊 Commerce store is hosted on the Cloud platform, use the CONSUMERS_WAIT_FOR_MAX_MESSAGESto configure how consumers process messages from the message queue.note note NOTE ActiveMQ Artemis (STOMP) was introduced in 51黑料不打烊 Commerce 2.4.6 and later versions.
See Start message queue consumers.