RabbitMQ的安装及PHP7.3的扩展

2019年10月15日 0 条评论 2.44k 次阅读 0 人点赞

一、安装erlang

由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang

sudo apt-get install erlang-nox

测试是否安装成功

命令:erl

Ctrl+C退出

二、安装Rabbitmq

更新源

sudo apt-get update

安装

sudo apt-get install rabbitmq-server

启动、停止、重启、状态rabbitMq命令

sudo rabbitmq-server start #启动

sudo rabbitmq-server stop #停止

sudo rabbitmq-server restart #查找

sudo rabbitmqctl status #状态

通过查询状态可以知道~此事rabbitMQ是正在运行的

当然你也可以将启动命令挂载后台执行

命令:nohup sudo rabbitmq-server start &

当关闭rabbitMQ脚本的时候可能会出现问题:报错如下

ERROR:node with name rabbit already running on…..

那我们就选择强制关闭

通过ps -ef |grep rabbit 查询进程号

kill (进程号)即可

三、添加admin,并赋予administrator权限

添加admin用户,密码设置为admin。

sudo rabbitmqctl add_user admin admin

赋予权限

sudo rabbitmqctl set_user_tags admin administrator

赋予virtual host中所有资源的配置、写、读权限以便管理其中的资源

sudo rabbitmqctl set_permissions -p / admin '.' '.' '.*'

四、RabbitMQ GUID使用

1、官方提供的一个web管理工具(rabbitmq_management) 有点类似于像phpmyadmin 这玩意儿

http://www.rabbitmq.com/management.html (官方地址)

2、安装了Rabbitmq后,默认也安装了该管理工具,执行命令即可启动

sudo rabbitmq-plugins enable rabbitmq_management

当出现上面这张图的时候代表我们已经开启了RabbitMQ GUID

此时访问路径为http://ip+15672/

使用刚刚创建的admin就可以登录,密码也为admin

如下图所示(如果你访问不了,请检查安全组防火墙是否放行端口)

此时此刻我们才完成了一半的工作,毕竟我们还需要PHP的扩展,才能支撑我们去代码层面操纵RabbitMQ

五、安装php RabbitMQ扩展(AMQP)

1、安装所需依赖,如果在编译时还提示缺少其他依赖,请自行安装(依赖如下)

autoconf gcc gcc-c++ cmake librabbitmq-devel librabbitmq

2、编译安装rabbitmq-c (请依次按顺序执行)

wget https://github.com/alanxz/rabbitmq-c/archive/v0.9.0.tar.gz

tar xf v0.9.0.tar.gz

cd rabbitmq-c-0.9.0/

mkdir build && cd build

cmake ..

make

make install

如果提示:Command 'cmake' not found, but can be installed with:

请安装cmake命令(apt install cmake)报错信息如下所示

3、安装rabbitmq的库

sudo apt-get install librabbitmq-dev

4、下载AMQP最新稳定版的PHP扩展

wget https://pecl.php.net/get/amqp-1.9.4.tgz

tar xf amqp-1.9.4.tgz

cd amqp-1.9.4

phpize

(注没有安装phpize的可以自行安装 命令为这种形式:apt install php7.3-dev,具体命令根据你的php版本来安装)

phpize命令执行完成后的结果如下图所示:

5、编译扩展模块

./configure --with-php-config=/usr/bin/php-config

注:此条命令需要自行配置php-config路径,具体使用命令:find / -name php-config查询

make

make install

执行结果如下图所示/user/lib/php/20170718/为扩展存放的地址,如下图所示amqp.so文件就是RabbitMQ在PHP上的扩展

6、修改php.ini文件添加扩展

这里请注意:php.ini文件在fpm目录下和cli目录下都有php.ini文件,这里需要大家对两个文件都进行修改,cli目录代表着终端命令行下的php配置,fpm目录代表着nginx通过网站访问的配置,二者是分开独立的,所以要配置php.ini,最好两个目录下的文件都进行修改。

如下图所示

phpinfo()看到这个结果,就能代表安装成功了

尝试使用使用PHP操纵RebbitMQ 的示例代码如下

一些概念

Rabbitmq 是一个功能很强大消息队列系统,使用起来可能不像某些 push 、pop 类型的队列简单(比如 redis 的list),Rabbitmq 支持消息的订阅发布模式,方便大型系统各个服务组件之间解耦和通信。我们首先要了解一些基本概念

Vhost: 可以先不深究,固定为 /
Connection:即连接, 与你日常理解的连接没有什么不同,比如 redis的连接,mysql的连接
Channel:即通道, 可以理解为一个连接中的子通道,想象一条高速公路,可能是 4车道的,也可能是 8 车道的,这些车道就是 Channel。

Exchange : 交换机,如果你知道交换机设备的话,它的原理跟交换机是基本一样的。
routingkey : 用来绑定交换机和队列的一个字符串。发送消息时需要指定 routingKey, 绑定了此 routingKey的队列将接收到此消息。
queue队列: 消息经过交换机,最终发送到队列中。

发布消息

以上代码保存为 send.php

消费消息

 

以上代码保存为 consume.php

运行代码

一开始队列是不存在的,我们需要先启动 consume.php 来初始化队列,打开终端,运行

启动后 , php consume.php 将阻塞监听队列消息。
然后打开新终端窗口运行:

然后在新 consume.php 所在的终端窗口将看到接收到的消息。

兰陵美酒郁金香

大道至简 Simplicity is the ultimate form of sophistication.

文章评论(0)

你必须 登录 才能发表评论