如何在 Magento 2 插件中使用 RabbitMQ 消息队列

Posted by

1. RabbitMQ 概述

RabbitMQ 是一个开源消息代理,它提供了一个可靠、高度可用、可扩展和可移植的消息系统。

消息队列提供了一种异步通信机制,其中消息的发送者和接收者不相互联系。它们也不需要同时与消息队列通信。当发件人将消息放入队列时,它会一直存储到收件人收到为止。

在安装 Magento 之前必须建立消息队列系统。基本顺序是

  1. 安装 RabbitMQ 和任何先决条件。
  2. 连接 RabbitMQ 和 Magento。

2. 在 Ubuntu 上安装 RabbitMQ

要在 Ubuntu 16 ,18,20 上安装 RabbitMQ,请输入以下命令:

sudo apt install -y rabbitmq-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
......
......
......
Setting up rabbitmq-server (3.6.10-1ubuntu0.5) ...
Adding group `rabbitmq' (GID 116) ...
Done.
Adding system user `rabbitmq' (UID 113) ...
Adding new user `rabbitmq' (UID 113) with group `rabbitmq' ...
Not creating home directory `/var/lib/rabbitmq'.
Created symlink /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service → /lib/systemd/system/rabbitmq-server.service.
Processing triggers for systemd (237-3ubuntu10.53) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for libc-bin (2.27-3ubuntu1.6) ...

此命令还安装所需的 Erlang 包。

如果你有旧版本的 Ubuntu,RabbitMQ 建议从他们的网站安装包。

  1. 从rabbitmq-server下载 .deb 包。
  2. 使用dpkg.

3. 在 CentOS 上安装 RabbitMQ

3.1 安装 Erlang

3.2 安装 RabbitMQ

RabbitMQ服务器包含在CentOS中,但是版本通常比较旧。RabbitMQ推荐从他们的网站上安装这个包。

参考RabbitMQ安装页面获取最新支持的版本。Magento 2.3和2.4支持RabbitMQ 3.8.x。

有关更多信息,请参阅在基于rpm的Linux上安装。

4. 配置 RabbitMQ

查看官方的RabbitMQ文档以配置和管理RabbitMQ。注意以下项目:

  • 环境变量
  • 端口访问
  • 默认用户帐户
  • 开始和停止broker
  • 系统限制

5. 使用RabbitMQ安装Magento并连接到Magento开源或Adobe Commerce

--amqp-host="<hostname>" --amqp-port="5672" --amqp-user="<user_name>" --amqp-password="<password>" --amqp-virtualhost="/"

如果你已经安装了Magento,并且你想把它连接到RabbitMQ,在/app/etc/env.php文件中添加一个queue部分,这样就像下面这样:

'queue' =>
  array (
    'amqp' =>
    array (
      'host' => 'rabbitmq.example.com',
      'port' => '11213',
      'user' => 'magento',
      'password' => 'magento',
      'virtualhost' => '/'
     ),
  ),

然后,运行bin/magento setup:upgrade 更改并在RabbitMQ中创建所需的队列。


bin/magento setup:upgrade

6. 配置SSL

要配置对SSL的支持,请在<install_directory>/app/etc/env.php文件中编辑SSL和SSL_Options参数,以便它们与以下内容相似:

'queue' =>
  array (
    'amqp' =>
    array (
      'host' => 'rabbitmq.example.com',
      'port' => '11213',
      'user' => 'magento',
      'password' => 'magento',
      'virtualhost' => '/',
      'ssl' => 'true',
      'ssl_options' => [
            'cafile' =>  '/etc/pki/tls/certs/DigiCertCA.crt',
            'certfile' => '/path/to/magento/app/etc/ssl/test-rabbit.crt',
            'keyfile' => '/path/to/magento/app/etc/ssl/test-rabbit.key'
       ],
     ),
  ),

7. 启动消息队列消费者

连接 Adob​​e Commerce 和 RabbitMQ 后,您必须启动消息队列使用者