yii配置rabbitmq消息列队

本文介绍了如何在Yii框架中配置和使用RabbitMQ进行消息队列操作。通过RabbitMq_Base和RabbitMq_Server两个类,实现了发送和接收消息的功能,详细展示了相关代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装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;
    } 
}
?>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值