group | title | functional_areas | redirect_from | redirect_to | status | |||
---|---|---|---|---|---|---|---|---|
cloud-guide |
Set up RabbitMQ service |
|
|
migrated |
The [Message Queue Framework (MQF)]({{ site.baseurl }}/guides/v2.3/config-guide/mq/rabbitmq-overview.html) is a system within {{site.data.var.ee}} 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.
{:.bs-callout-warning}
If you prefer using an existing AMQP-based service, like RabbitMQ, instead of relying on {{site.data.var.ece}} to create it for you, use the [QUEUE_CONFIGURATION
]({{ site.baseurl }}/cloud/env/variables-deploy.html#queue_configuration) environment variable to connect it to your site.
{% include cloud/service-config-integration-starter.md %}
{:.procedure} To enable RabbitMQ:
-
Add the required name, type, and disk value (in MB) to the
.magento/services.yaml
file along with the installed RabbitMQ version.rabbitmq: type: rabbitmq:<version> disk: 1024
-
Configure the relationships in the
.magento.app.yaml
file.relationships: rabbitmq: "rabbitmq:rabbitmq"
-
Add, commit, and push your code changes.
git add -A
git commit -m "Enable RabbitMQ service"
git push origin <branch-name>
-
[Verify the service relationships]({{ site.baseurl }}/cloud/project/services.html#service-relationships).
For information on how these changes affect your environments, see [services.yaml
]({{ site.baseurl }}/cloud/project/services.html).
{% include cloud/tip-change-installed-service-version.md %}
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
- Connect from the application
- Connect from your PHP application
-
Log in to the
magento-cloud
CLI and project:magento-cloud login
-
Checkout the environment with RabbitMQ installed and configured.
magento-cloud environment:checkout <environment-id>
-
Use SSH to connect to the Cloud environment:
magento-cloud ssh
-
Retrieve the RabbitMQ connection details and login credentials from the [$MAGENTO_CLOUD_RELATIONSHIPS]({{ site.baseurl }}/cloud/project/magento-app-properties.html#relationships) variable:
echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
or
php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
In the response, find the RabbitMQ information, for example:
{ "rabbitmq" : [ { "password" : "guest", "ip" : "246.0.129.2", "scheme" : "amqp", "port" : 5672, "host" : "rabbitmq.internal", "username" : "guest" } ] }
{:.no-copy}
-
Enable local port forwarding to RabbitMQ.
ssh -L <port-number>:rabbitmq.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:ssh -L 15672:rabbitmq.internal:15672 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
-
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_RELATIONSHIPS variable.
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,
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.
To connect to RabbitMQ using your PHP application, add a PHP library (like PHP AMQPlib) to your source tree.