The following steps should help:
Add the following element to array in app/etc/env.php:
'queue' => [
'amqp' => [
'host' => 'localhost',
'port' => '5672',
'user' => 'guest',
'password' => 'guest',
'virtualhost' => '/',
'ssl' => ''
Make sure exchanges, queues and exchange-to-...
Magento EE (If you're in CE you can use this extension, this answer will not help you setting up with that extension.)
Know the basics of the MQ protocol here a useful diagram
How to get started?
Everything starts from the communication.xml file (I assume you're creating a new module), its where you define the topics for the ...
You can find queue consumers by searching for etc/queue_consumer.xml files.
In Magento 2.3.0 Open Source, there was one, async.operations.all, from the Magento_WebapiAsync module, the asynchronous API.
In Magento 2.3.2 Open Source, the following have been added:
product_action_attribute.update from Magento_Catalog
Flock not needed since Magento 2.3.2, because Magento already has own lock mechanism.
In 2.3 queues were added for product mass updates. You would need to run the consumer for product_action_attribute.update for it to process the updates.
In your case it would be
bin/magento queue:consumers:start product_action_attribute.update, you could have multiple consumers running at the same time, but I guess one will do.
Oh dear, I found it. With the update, I've removed the module magento/module-url-rewrite-import-export because Magento yet has to release a version that's compatible with Magento 2.3
This module came with a queue. On the live system, this queue configuration was still present:
"queue--url_rewrite_import--url.rewrite.import" => [
I had to read up myself and the concept also confused me
I found the following online and the context of what's trying to be done this makes sense.
This [merger] class can be used for preliminary processing of messages even before the class that was declared in queue.xml in the Consumer section. It is obligatory to use this class, but if you do not ...
If you don't want to use the Magento Message Queues, you can just disable it.
php bin/magento module:disable Magento_Amqp
If you want to use it, you might modify your app/etc/env.php
'cron_consumers_runner' => [
'cron_run' => false,
'max_messages' => 1000,
'consumers' => [
We've published documentation about 2.1 message queues at http://devdocs.magento.com/guides/v2.1/config-guide/mq/config-mq.html and http://devdocs.magento.com/guides/v2.1/config-guide/mq/queue-migration.html
I prefer to use postfix queue system, it works better than magento built-in queue system.
Just install postfix on your local machine, setup a smarthost as relay. you can relay to amazon SES, SendGrid, or any remote SMTP service.
Then you need to point your magento2 to send email to localhost:25. I don't remember what method the builtin magento2 system is ...