PHP 操作 rabbitMQ 两种方式
PHP 操作 rabbitMQ 两种方式
一 通过安装 amqp 扩展包(推荐)
https://pecl.php.net/get/amqp-1.9.3.tgz
AMQPQueue::ack 确认收到信息, 消息将删除
AMQPQueue::nack 将消息标记为未确认
手册
http://docs.php.net/manual/da/book.amqp.php
案例:
https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/php-amqp
二 通过 composer 包操作
composer require php-amqplib/php-amqplib
其本质是通过 PHP Stream 函数操作 rabbitMQ;
使用案例:
https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/php
rabbitmq扩展包安装:
yum install -y git cmake
Erlang下载地址:
http://www.rabbitmq.com/releases/erlang/
RabbitMQ下载地址:
https://www.rabbitmq.com/releases/rabbitmq-server/
1.首先就是安装 rabbitmq 了, 简单, 因为 rabbitmq 是依赖 erlang, 所以还需要安装 erlang
> # wget https://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
> # yum install erlang-19.0.4-1.el7.centos.x86_64.rpm
> # erl -version
安装rabbitmq
> # wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpm
> # yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
安装结束后进入 /usr/sbin 中执行以下操作
> # cd /usr/sbin
启动服务:
> # rabbitmq-server -detached //启动rabbitmq,-detached代表后台守护进程方式启动。
Warning: PID file not written; -detached was passed.
然后启用网页管理插件:
> # rabbitmq-plugins enable rabbitmq_management
配置防火墙:
配置linux 端口 15672 网页管理 5672 AMQP端口:
> # firewall-cmd --permanent --add-port=15672/tcp
> # firewall-cmd --permanent --add-port=5672/tcp
> # systemctl restart firewalld.service
rabbitMQ给我们默认的用户名和密码是一致的为guest, 但是如果我们非本机登陆便会报错
2.安装 rabbitmq-c, C 与 RabbitMQ 通信需要依赖 rabbitmq-c 库(librabbitmq), 具体请看
https://github.com/alanxz/rabbitmq-c:
git clone git://github.com/alanxz/rabbitmq-c.git
cd rabbitmq-c
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq ..
cmake --build . --target install
注意路径指定, 下载amqp扩展时需要指定路径, 同时需要修改安装路径下的lib64为lib, 否则php扩展载入的时候找不到扩展
提示: rabbitmq客户端需要安装rabbitmq-c组件
3.接下来就是安装 php amqp 的扩展了:
你可以源码编译安装
wget http://pecl.php.net/get/amqp-1.0.0.tgz
tar zxvf amqp-1.0.0.tgz
cd amqp-1.0.0
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config –with-amqp
make && make install
当然也可以直接用 PECL 来装, 如果还没有安装 pear 的话:
wget http://pear.php.net/go-pear.phar
php -d detect_unicode=0 go-pear.phar
然后直接用 pecl 来安装扩展
~/pear/bin/pecl install amqp
pecl安装过程中, 必须指定好 rabbitmq-c文件的安装路径才行
set the path to librabbitmq install prefix [autodetect] : /usr/local/rabbitmq
必须指定好 rabbitmq-c文件的安装路径才行
最后将'extension=amqp.so'加入 php.ini, 重启 apache, 再查看下:
php -i | grep amqp
已经装好了!