rabbitMQ消息队列 – 面板介绍及简单demo

9 篇文章 0 订阅

首先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这个进行链接

链接类库的具体作用

  1.  实现登入
  2.  实现了消息通道的管理

###通道类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);

如需转载请注明: 转载自26点的博客

本文链接地址: rabbitMQ消息队列 – 面板介绍及简单demo

转载请注明:26点的博客 » rabbitMQ消息队列 – 面板介绍及简单demo

来源:http://www.iamlintao.com/6395.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rabbitmq(MQ)全称为Message Queue, 消息队列是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列消息来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ等等。<?php namespace PhpAmqpLib\Connection; class AMQPLazyConnection extends AMQPStreamConnection {     /**      * Gets socket from current connection      *      * @deprecated      */     public function getSocket()     {         $this->connect();         return parent::getSocket();     }     /**      * {@inheritdoc}      */     public function channel($channel_id = null)     {         $this->connect();         return parent::channel($channel_id);     }     /**      * @return null|\PhpAmqpLib\Wire\IO\AbstractIO      */     protected function getIO()     {         if (empty($this->io)) {             $this->connect();         }         return $this->io;     }     /**      * Should the connection be attempted during construction?      *      * @return bool      */     public function connectOnConstruct()     {         return false;     } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值