安装rabbitmq就不在此赘述了
\protected\extensions\rabbitmq\RabbitMq_Base.php
<?php
/**
* @desc 配置rabbitmq基类
* @author Ezreal.Yin
* @date 2016-10-20
*/
class RabbitMq_Base{
public function __construct(){
include_once('RabbitMq_Server.php');
}
public static function setRabbitMq($message,$k_route = 'operate-log',$e_name=''){
$rabbitObj = new RabbitMq_Server();
$rabbitObj->setRabbit($message,$k_route);//设置列队
}
public static function getRabbitMq($k_route = 'operate-log' ){
$rabbitObj = new RabbitMq_Server();
$getRabObj = $rabbitObj->getRabbit($k_route,'q_'.$k_route);//获取列队
return $getRabObj;
}
}
?>
\protected\extensions\rabbitmq\RabbitMq_Server.php
<?php
/**
* @desc 配置rabbitmq
* @author Ezreal.Yin
* @date 2016-10-20
*/
class RabbitMq_Server{
private $conn_args = array('host'=>'127.0.0.1','port'=>'5672','login'=>'guest','password'=>'guest','vhost'=>'/');
private $channel;
private $e_name = 'glitzcloud';
public function __construct(){
//创建Exchannel
$this->channel = $this->connrabbit($this->conn_args);
if(!$this->channel){
echo 'Cannot Connect to the broker';
exit();
}
}
/*
*创建RabbitMq Message
*/
public function setRabbit($message,$k_route,$e_name=''){
if(empty($e_name)){
$e_name = $this->e_name;
}
$channel = $this->channel;
$ex = new AMQPExchange($channel);
$ex->setName($e_name);//创建名字
$ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
$ex->setFlags(AMQP_DURABLE); //持久化
$ex->declareExchange();
$ex->publish($message,$k_route);
}
/*
*获取RabbitMq Message
*/
public function getRabbit($k_route,$q_name){
$channel = $this->channel;
$q = new AMQPQueue($channel);
$q->setName($q_name);
$q->setFlags(AMQP_DURABLE);
$q->declare();
$q->bind($this->e_name, $k_route);
$messages = $q->get(AMQP_AUTOACK);
if(is_object( $messages))
return $messages->getBody();
return $messages;
}
/**
*链接RabbitMQ
*/
protected function connrabbit($conn_args){
$conn = new AMQPConnection($conn_args);
if(!$conn->connect()){
return false;
}
$channel = new AMQPChannel($conn);
return $channel;
}
}
?>
yii配置rabbitmq消息列队
最新推荐文章于 2024-11-24 00:50:34 发布