1. RabbitMQ 概述
RabbitMQ 是一个开源消息代理,它提供了一个可靠、高度可用、可扩展和可移植的消息系统。
消息队列提供了一种异步通信机制,其中消息的发送者和接收者不相互联系。它们也不需要同时与消息队列通信。当发件人将消息放入队列时,它会一直存储到收件人收到为止。
在安装 Magento 之前必须建立消息队列系统。基本顺序是
- 安装 RabbitMQ 和任何先决条件。
- 连接 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 建议从他们的网站安装包。
- 从rabbitmq-server下载 .deb 包。
- 使用
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. 启动消息队列消费者
连接 Adobe Commerce 和 RabbitMQ 后,您必须启动消息队列使用者