Manage message queues with MySQL
If you do not want to implement the RabbitMQ solution, you can manage message queues with cron jobs (or an external process manager)and the CLI to ensure that consumers are retrieving messages.
Cron jobs are the default mechanism to restart consumers. Processes started by
cron consume the specified number of messages, then die after that. Re-running
cron restarts the consumer.
A magic method, whose name is the same as the consumer name, is used as a callback when declaring new
consumer run job in
crontab.xml. Using magic methods allows you to pass the name of the consumer implicitly via method name. Alternatively, virtual types based on abstract consumer runner should be declared with concrete consumer name specified as an argument (this approach is more complex and required extra configuration).
The following shows a
crontab group entry:
See Configure and run cron for more information about using cron with Magento.
You can also use a process manager such as Supervisor to monitor the status of processes. The manager can use the CLI to restart the processes as needed.
Command line interface
The CLI can be used to start consumers of the messages from the queue. Multiple consumers can be started at a same time.
./bin/magento queue:consumers:start <consumer_name> [--max-messages=<value>]
<consumer_name> is the consumer to start.
--max-messages=<value> defines the maximum number of messages to consume per invocation. If number of messages are less then defined maximum number of messages, then the consumer will receive all the available messages in a queue.
--max-messages is not defined, the consumer continues to receive endless number of new messages
After getting all available messages, the CLI command terminates. The command can be launched again with cron within a configured period of time, or manually.
Use the following command to return a list of message queue consumers: