首先rabbit安装好之后,运维会给一个控制面板.
默认账号密码为guest
登入以后可以看到具体界面.
在此鸣谢百度翻译给予的大力支持..
###写一个简单的demo
编写之前..虽然说可以直接用底层扩展实现连接.但是还是用封装过的代码比较好一些.
所以我们使用了比较有名的类库来开发
可以在https://packagist.org/ 中搜索AMQP(AMQP可以看成是一种消息队列的通讯规范)
假设你装有composer,并设置了国内源
可以在命令行创建一个目录,并执行命令
首先了解下类库结构,目录如下
\vendor\php-amqplib\php-amqplib\PhpAmqpLib
|-Channel 消息通道类库
|-Connection 链接类库
|-Exception 异常类库
|-Helper 助手类
|-Message 消息类
|-Wire 通讯类库
###链接类Connection
你可以用不同的方式链接MQ服务器,同时封装了
文件列举如下
|–AMQPConnection常用的,实际上就是AMQPStreamConnection套了个马甲
|–AMQPLazyConnection惰性链接,也是AMQPStreamConnection的子类
|–AMQPSocketConnection TCP/IP链接
|–AMQPSSLConnection 加密链接,AMQPStreamConnection的子类
|–AMQPStreamConnection 流式链接
>[info]实际上一共也就是两种链接方式Stream和Socket
PHP对Socket进行了封装形成的Stream_Socket支持更多通讯协议.如加密传输.
但是太具体的区别,确实不清楚.后续我们将使用AMQPConnection这个进行链接
链接类库的具体作用
实现登入
实现了消息通道的管理
###通道类Channel
|–AMQPChannel
主要功能么.进行绑定,比如交换机,队列名.发送消息.接收消息
###异常类Exception
|–AMQPBasicCancel
需整理实践
###助手类Helper
###消息类Message
###未知类Wire
//引入库引导文件
require 'vendor/autoload.php';
$conn_args = array(
'host'=>'127.0.0.1', //rabbitmq 服务器host
'port'=>5672, //rabbitmq 服务器端口
'login'=>'guest', //登录用户
'password'=>'guest', //登录密码
'vhost'=>'/' //虚拟主机
);
$e_name = 'e_demo';
$q_name = 'q_demo';
$k_route = 'key_1';
$conn = new AMQPConnection($conn_args);
if(!$conn->connect()){
die('Cannot connect to the broker');
}
$channel = new AMQPChannel($conn);
$ex = new AMQPExchange($channel);
$ex->setName($e_name);
$ex->setType(AMQP_EX_TYPE_DIRECT);
$ex->setFlags(AMQP_DURABLE);
$status = $ex->declareExchange(); //声明一个新交换机,如果这个交换机已经存在了,就不需要再调用declareExchange()方法了.
$q = new AMQPQueue($channel);
$q->setName($q_name);
$status = $q->declareQueue(); //同理如果该队列已经存在不用再调用这个方法了。
$ex->publish($msg, $k_route);