关于 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