RabbitMQ

RabbitMQ 简介

RabbitMQ是什么?官方的说明如下:

  • 提供给应用软件的健壮的消息系统
  • 容易使用
  • 能够在绝大多数主流操作系统上运行
  • 开源且被商业支持

更详细的介绍及安装信息可以在RabbitMQ官网上获取:

http://www.rabbitmq.com

libamqp库

rabbitmq支持amqp协议,在php里需要安装libamqp库扩展安装方法和库函数见文档:
http://www.php.net/amqp

生产者

发送一条信息到队全一般都是如下操作,这里以发送站内信给会员为例:

function msg_queue(){
       $this->begin();
       //step1.实例会队列,该类会根据配置信息选择使用的是哪种队列系统。
       $queue = new base_queue();
       $member_obj = $this->app->model('members');
       $aMember = json_decode($_POST['arrMember']);
       unset($_POST['arrMember']);
       foreach($aMember as $key=>$val){
            $member_sdf = $member_obj->dump($val,'*',array(':account@pam'=>array('login_name')));
            $login_name = $member_sdf['pam_account']['login_name'];
	    //step2.构造消息,因为要和系统默认的mysql队列兼容,所以按mysq队列的格式传递
            $data = array(
            'queue_title'=>app::get('b2c')->_('发站内信'),
            'start_time'=>time(),
            'params'=>array(
            'member_id'=>$val,
            'data' =>$_POST,
            'name' => $login_name,
            ),
	    //step3.自定义的消费者(worker)
            'worker' => 'b2c_queue.send_msg',
        );
	//step4.发布消息
       if(!$queue->publish($data)){
            $this->end(false,app::get('b2c')->_('操作失败!'));
        }
       }
            $this->end(true,app::get('b2c')->_('操作成功!'));
    }

內容目录

上一个主题

MySQL队列(默认队列)

下一个主题

定时任务

快速搜索

输入相关的模块,术语,类或者函数名称进行搜索