Message Queue in Magento 2

What is Message Queue in Magento 2?

Message Queue in Magento 2 is an asynchronous communication mechanism that allows different parts of the system to communicate with each other through messages instead of direct execution.

Instead of executing a heavy task immediately, Magento can push the task into a queue. A consumer then processes the message later in the background. This improves performance, scalability, and system reliability.

Magento supports message queues using:

  • RabbitMQ (recommended for production)
  • MySQL database queue (default fallback)

Why Use Message Queue?

  • Process heavy tasks asynchronously.
  • Improve application performance.
  • Handle large data processing in background.
  • Decouple system components.
  • Enable scalable microservice communication.

Common Magento features using queues:

  • Order processing
  • Email sending
  • Inventory updates
  • Bulk operations
  • Async API operations

Core Components of Magento Message Queue

  • Publisher → Sends messages to a queue.
  • Exchange → Routes messages.
  • Queue → Stores messages temporarily.
  • Consumer → Processes messages.
  • Topic → Defines message structure.

Step 1: Define Communication Topic

The communication.xml file defines the message topic.

(File: app/code/VendorName/ModuleName/etc/communication.xml)




This defines a topic that will carry string messages.

Step 2: Configure Queue and Exchange

Queues and routing are defined in queue_topology.xml.

(File: app/code/VendorName/ModuleName/etc/queue_topology.xml)




Step 3: Define the Queue

(File: app/code/VendorName/ModuleName/etc/queue.xml)




Step 4: Create Message Publisher

The publisher sends messages to the queue.




Step 5: Create Queue Consumer

The consumer processes messages from the queue.

(File: app/code/VendorName/ModuleName/Model/Consumer.php)




Step 6: Register Consumer

(File: app/code/VendorName/ModuleName/etc/queue_consumer.xml)




Running the Consumer

Start the queue consumer using Magento CLI:




Advantages of Message Queue

  • Asynchronous processing.
  • Improves application scalability.
  • Handles large workloads efficiently.
  • Decouples services.
  • Better fault tolerance.

Best Practices

  • Use RabbitMQ in production environments.
  • Keep messages lightweight.
  • Handle failures and retries properly.
  • Monitor queue consumers.
  • Use message queues for heavy operations such as imports or bulk updates.