前言:最近有应用场景用到了rabbitmq,于是便简单的安装使用了一下,配合supervisor处理任务
rabbitmq安装
- 安装rabbitmq的docker容器
docker pull rabbitmq:3
- 开启后台守护模式
docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3
- 开启web管理页面
rabbitmq-plugins enable rabbitmq_management
- 重启docker容器
docker restart some-rabbit
- 查看web页面的ip地址,我的显示是172.17.0.5
docker inspect --format='{{.NetworkSettings.IPAddress}}' some-rabbit
-
打开rabbitmq的web管理页面,默认端口是:15672
地址为:http://172.17.0.5:15672/#/. 如果打开后页面如下所示,则显示配置成功
php-amqplib及使用(我用的是php框架Yii2)
- 使用composer安装php-amqplib,如果没有安装composer的请自己去安装,这里就不做描述了
composer require php-amqplib/php-amqplib
- 编写测试代码(注意172.17.0.5是我自己docker的ip,你们请填写自己的ip)
<?php
namespace frontend\controllers;
use Yii;
use yii\web\Controller;
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
/**
* Site controller
*/
class IndexController extends Controller
{
public function actionIndex()
{
$connection = new AMQPStreamConnection('172.17.0.5', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('hello', false, false, false, false);
$msg = new AMQPMessage('Hello World!');
$channel->basic_publish($msg, '', 'hello');
echo " [x] Sent 'Hello World!'\n";
$channel->close();
$connection->close();
}
}
- 打开页面检测是否成功,若果出现"Call to undefined function bcadd()" 的错误,请安装php-bcmath扩展,我的是centos系统,使用yum安装
#查找扩展版本
yum search bcmath
#我的是php71
yum install php71w-bcmath.x86_64
- 重启nginx和php-fpm(我这里php服务器用的是docker容器,所以只要重启容器就行了)
#重启我的web容器
docker restart web-dev
- 再重启打开页面检测,如果出现下图则表示测试成功
6.去rabbitmq的web页查看是否有队列进入,箭头指向的就是我传入的队列
结尾:rabbitmq+php-amqplib已配置完毕,关于supervisor怎么和rabbitmq和php-amqplib协同工作
PS.下篇文章地址:http://www.jianshu.com/p/9269b0deb74a