Magento2安装配置RabbitMQ

关于 RabbitMQ 和 Magento2

RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。

RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言。

以熟悉的电商场景为例,如果商品服务和订单服务是两个不同的微服务,在下单的过程中订单服务需要调用商品服务进行扣库存操作。按照传统的方式,下单过程要等到调用完毕之后才能返回下单成功,如果网络产生波动等原因使得商品服务扣库存延迟或者失败,会带来较差的用户体验,如果在高并发的场景下,这样的处理显然是不合适的,那怎么进行优化呢?这就需要消息队列登场了。

消息队列提供一个异步通信机制,消息的发送者不必一直等待到消息被成功处理才返回,而是立即返回。消息中间件负责处理网络通信,如果网络连接不可用,消息被暂存于队列当中,当网络畅通的时候在将消息转发给相应的应用程序或者服务,当然前提是这些服务订阅了该队列。如果在商品服务和订单服务之间使用消息中间件,既可以提高并发量,又降低服务之间的耦合度。

RabbitMQ就是这样一款我们苦苦追寻的消息队列。RabbitMQ是一个开源的消息代理的队列服务器,用来通过普通协议在完全不同的应用之间共享数据。

RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。Erlang语言在数据交互方面性能优秀,有着和原生Socket一样的延迟,这也是RabbitMQ高性能的原因所在。可谓“人如其名”,RabbitMQ像兔子一样迅速。

安装 RabbitMQ

如果你使用Ubuntu系统可以直接运行下列命令进行安装RabbitMQ

sudo apt install -y rabbitmq-server

新增用户

rabbitmqctl add_user sa 123456

设置为管理员

rabbitmqctl set_user_tags sa administrator

设置权限

rabbitmqctl set_permissions -p / sa ".*" ".*" ".*"

其他命令

#查询用户:
    rabbitmqctl list_users
#查询vhosts:
    rabbitmqctl list_vhosts
#启动RabbitMQ服务:
    net stop RabbitMQ && net start RabbitMQ     

配置Magento2连接到RabbitMQ

bin/magento setup:config:set --amqp-host="<hostname>" --amqp-port="5672" --amqp-user="<user_name>" --amqp-password="<password>" --amqp-virtualhost="/"

更多信息请阅读开发手册:
https://doc.magentochina.org/guides/v2.3/install-gde/prereq/install-rabbitmq.html