Set up RabbitMQ service

The Message Queue Framework (MQF) is a system within Magento Commerce that allows a module to publish messages to queues. It also defines the consumers that will receive the messages asynchronously.

The MQF uses RabbitMQ as the messaging broker, which provides a scalable platform for sending and receiving messages. It also includes a mechanism for storing undelivered messages. RabbitMQ is based on the Advanced Message Queuing Protocol (AMQP) 0.9.1 specification.

If you prefer using an existing AMQP-based service, like RabbitMQ, instead of relying on Magento Commerce Cloud to create it for you, use the QUEUE_CONFIGURATION environment variable to connect it to your site.

You can use the following instructions for service setup on Magento Commerce Cloud Pro Integration environments and Starter environments, including master branch. You must submit a support ticket to configure the service on Pro Production and Staging environments. See Services.

To enable RabbitMQ:

  1. Add the required name, type, and disk value (in MB) to the .magento/services.yaml file along with the the installed RabbitMQ version.

    1
    2
    3
    
    rabbitmq:
        type: rabbitmq:<version>
        disk: 1024
    
  2. Configure the relationships in the .magento.app.yaml file.

    1
    2
    
    relationships:
        rabbitmq: "rabbitmq:rabbitmq"
    
  3. Add, commit, and push your code changes.

    1
    
    git add -A && git commit -m "Enable RabbitMQ service" && git push origin <branch-name>
    
  4. Verify the service relationships.

For information on how these changes affect your environments, see services.yaml.

Supported service versions

Connect to RabbitMQ for debugging

For debugging purposes, it is useful to directly connect to a service instance in one of the following ways:

Connect from your local development environment

  1. Log in to the Magento Cloud CLI and project:

    1
    
    magento-cloud login
    
  2. Checkout the environment with RabbitMQ installed and configured.

    1
    
    magento-cloud environment:checkout <environment-id>
    
  3. Use SSH to connect to the Cloud environment:

    1
    
    magento-cloud ssh
    
  4. Retrieve the RabbitMQ connection details and login credentials from the $MAGENTO_CLOUD_RELATIONSHIPS variable:

    1
    
    echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
    

    or

    1
    
    php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
    

    In the response, find the RabbitMQ information, for example:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    {
       "rabbitmq" : [
          {
             "password" : "guest",
             "ip" : "246.0.129.2",
             "scheme" : "amqp",
             "port" : 5672,
             "host" : "rabbitmq.internal",
             "username" : "guest"
          }
       ]
    }
    
  5. Enable local port forwarding to RabbitMQ.

    1
    
    ssh -L <port-number>:mq.internal:<port-number> <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    

    An example for accessing the RabbitMQ management web interface at http://localhost:15672 is:

    1
    
    ssh -L 15672:localhost:15672 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    
  6. While the session is open, you can start a RabbitMQ client of your choice from your local workstation, configured to connect to the localhost:<portnumber> using the port number, username, and password information from the MAGENTO_CLOUD_RELATIONSHIP variable.

Connect from the application

To connect to RabbitMQ running in an application, you need to install a client such as amqp-utils as a project dependency in your .magento.app.yaml file.

For example,

1
2
3
dependencies:
    ruby:
        amqp-utils: "0.5.1"

Then, when you log in to your PHP container, you enter any amqp- command available to manage your queues.

Connect from your PHP application

To connect to RabbitMQ using your PHP application, add a PHP library (like PHP AMQPlib) to your source tree.