前置问题
MQ定义及用途
MQ,即Message Queue,中文消息队列,本质是队列,存储的是消息。主要三大用途:应用解藕、异步处理、流量削峰。
AMQP定义
AMQP(Advanced message queuing protocol),高级消息队列协议。是具有现代特征的二进制协议,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层的一个开发标准,为面向消息的中间件设计的。
RabbitMQ
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
RabbitMQ高性能的
Erlang语言最初用于交换机领域的架构模式,这样使得RabbitMQ在Broker之间进行数据交互的,性能是非常优秀的。
Erlang语言的优点:Erlang有着与原生socket一样的延迟。
RabbitMQ的优点
- 基于AMQP协议
- 高并发(是一个容量的概念,服务器可以接受的最大任务数量)
- 高性能(是一个速度的概念,单位时间内服务器可以处理的任务书)
- 高可用(是一个持久的概念,单位时间为服务器可以正常工作的时间比例)
- 强大的社区支持,以及很大型公司都在使用
- 支持插件如,haproxy
- 支持语言丰富
MacOS本地配置安装
安装rabbitmq
brew install php-amqp
管理页面地址
启动/关闭/重启
brew services start rabbitmq
brew services stop rabbitmq
brew services restart rabbitmq
PHP访问rabbitmq需安装配置
首先安装rabbitmq-c,后面安装amqp扩展的依赖。
brew install rabbitmq-c
查看rabbitmq-c安装目录
cd /usr/local/Cellar/rabbitmq-c/
使用pecl安装
pecl install amqp
安装过程提示:Set the path to librabbitmq install prefix [autodetect]
输入rabbitmq-c安装目录位置 (0.10.0)是安装的版本目录
/usr/local/Cellar/rabbitmq-c/0.10.0
安装完成重启php
brew services restart php
查看php是否安装成功amqp
php -m | grep amqp
php本地测试代码
记得管理页http://localhost:15672/ 设置用户及vhost
/* Create a new connection */
$cnn = new AMQPConnection();
// set the login details
$cnn->setVhost('bayeasy');
$cnn->setLogin('bayeasy');
$cnn->setPassword('bayeasy');
if ($cnn->connect()) {
echo "Established a connection to the broker";
}
else {
echo "Cannot connect to the broker";
}
Lavarvel 安装 amqp扩展
composer require php-amqplib/php-amqplib