变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

東坡下載:內容最豐富最安全的下載站!

首頁IT技術硬件技術 → RibbetMQ php擴展使用 實現隊列生產消費

RibbetMQ php擴展使用 實現隊列生產消費

相關文章發表評論 來源:本站整理時間:2015/5/28 15:09:48字體大小:A-A+

更多

作者:專題點擊:151次評論:0次標簽: php擴展使用

一般的隊列系統,是指linux中的crontab定時啟動腳本來處理任務:

首先下載一個rabbitmq的客戶端,他相當于一個容器,裝排隊數據的容器

http://www.rabbitmq.com/download.html

默認的端口是55672   訪問地址http://127.0.0.1:55672/

默認帳號密碼   guest    guest

你可以看到rabbitmq 的管理界面

 

 

 

mq的任務是一個不浪費資源,的一個隊列系統!

 

        php使用需要下載一個amqp擴展

         或者直接點擊下面的地址找到適合自己的版本,下載

            http://pecl.php.net/package/amqp/1.2.0/windows

 

              

            rabbitmq.1.dll   放在C盤windows下

            php_amqp.dll    放入php擴展中

            開啟php_amqp.dll的引用

            重啟服務器

用phpinfo();

查看是否引用成功,如果出現以下的amqp擴展,那就說明成功了

 

 

首先是rabbitmq的生產者:

    創建第一個index文件:然后去mq中查看,如果添加一個test001的隊列名信息,就說明已經添加進去了,xx22的信息已經在mq中存儲!

    接下來就需要跑數據了。

    createQueue(array('xxx','2222'),'test001');

    echo "ok";

     function createQueue($message,$queueName,$exchangeName = '', $queueKey = '')

    {

        $queueName = self::getQueueName($queueName);

        $conn_args = array('host' =>'localhost', 'port'=> '5672',

            'login' =>'guest',        //mq帳號

            'password'=> '',        //mq密碼

             'vhost' => '/');

        $conn = new AMQPConnection($conn_args);

        $conn->connect();

        $channel = new AMQPChannel($conn);

        if (!$exchangeName) {

            $exchangeName = $queueName;

        }

        $queueName = $queueName;

        if (!$queueKey) {

            $queueKey = $queueName;

        }

        $ex = new AMQPExchange($channel);

        $ex->setName($exchangeName);

        $ex->setType(AMQP_EX_TYPE_TOPIC);

        $ex->setFlags(AMQP_DURABLE); //exchange持久化

        $ex->declareExchange();

        $q = new AMQPQueue($channel);

        $q->setName($queueName);

        $q->setFlags(AMQP_DURABLE); //queue持久化

        $q->declareQueue();

        $q->bind($exchangeName, $queueKey);

        $channel->startTransaction();

        /**

         * 消息持久化,delivery_mode:2持久化、delivery_mode:1非持久化,其中priority是設置消息的優先級,測試中發現并未起作用。

         * 消息還有其他屬性,請參考http://www.php.net/manual/zh/amqpexchange.publish.php

         */

        $result = $ex->publish(json_encode($message), $queueKey, AMQP_NOPARAM, array('delivery_mode'=>2, 'priority'=> 9));

        $channel->commitTransaction();

        $conn->disconnect();

    }  

 

有了生產者,那就有消費者。

腳本如果沒有其他的修改或問題,基本上都是常年啟動的:

 

消費者基類:

        class WorkerCommand{

        function qInit($q_name,$e_name='',$k_route=''){

                $q_name = Utils::getQueueName($q_name);

                $conn_args = array(

                    'host' => '127.0.0.1',            //mq的配置

                    'port' => '5672',

                    'login' => 'guest',

                    'password' => 'huoxingxing',

                    'vhost' => '/'

                );

              

          

        //創建連接和channel

                $conn = new AMQPConnection($conn_args);

                if (!$conn->connect()) {

                    die("Cannot connect to the broker!\n");

                }

                $channel = new AMQPChannel($conn);

        //創建交換機

                $ex = new AMQPExchange($channel);

                if (!$e_name) {

                    $e_name = $q_name;

                }

                $ex->setName($e_name);

                $ex->setType(AMQP_EX_TYPE_DIRECT); //direct類型

                $ex->setFlags(AMQP_DURABLE); //持久化

               // echo "Exchange Status:" . $ex->declareExchange() . "\n";

        //創建隊列

                $q = new AMQPQueue($channel);

                $q->setName($q_name);

                $q->setFlags(AMQP_DURABLE); //持久化

               // echo "Message Total:" . $q->declareExchange() . "\n";

                if (!$k_route) {

                    $k_route = $q_name;

                }

        //綁定交換機與隊列,并指定路由鍵

               // echo 'Queue Bind: ' . $q->declareQueue($e_name, $k_route) . "\n";

        //阻塞模式接收消息

                echo "Message:\n";

                while (True) {

                    $q->consume(array($this,'processMessage'));

                    //$q->consume('processMessage', AMQP_AUTOACK); //自動ACK應答

                }

                $conn->disconnect();

        }

}    

 

消費者:

class WorkerWareSyncBackUpCommand extends WorkerCommand {

    function actionIndex()

    {

        $this->qInit('SyncWareBackup');

    }

    function processMessage($envelope, $queue)

    {

        $msg = json_decode($envelope->getBody());

        Utils::doBackUp('back',$msg,'');

        $queue->ack($envelope->getDeliveryTag()); //手動發送ACK應答

    }

}

擴展知識

相關評論

閱讀本文后您有什么感想? 已有 人給出評價!

  • 2791 喜歡喜歡
  • 2101 頂
  • 800 難過難過
  • 1219 囧
  • 4049 圍觀圍觀
  • 5602 無聊無聊
熱門評論
最新評論
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數: 0/500 (您的評論需要經過審核才能顯示)

本類常用軟件

主站蜘蛛池模板: 小明永久免费看看 | 国产高清av在线播放 | 波多野结衣被强在线视频 | 老司机精品免费视频 | 手机看片a永久免费看大片 手机看片91精品一区 | 精品国产日韩亚洲一区在线 | 国产精品久久一区 | 国产在线观看成人免费视频 | 久在线精品视频 | 最近中文字幕免费完整 | 中国男女全黄大片一级 | 午夜高清在线观看免费6 | 欧美日韩在线精品成人综合网 | 两性色午夜视频免费播放 | 久久亚洲国产成人亚 | 亚洲天堂久久久 | 最近免费中文字幕大全免费 | 黄色片在线播放 | 亚洲噜噜噜噜噜影院在线播放 | 韩日一级毛片 | 夜夜爽夜夜叫夜夜高潮漏水 | 男男羞羞视频免费网站 | 免费黄色网址在线播放 | 2021最新国产精品一区 | 在线视频一区二区 | 欧美三级第一页 | free女厕所vedio中国 | 成人在免费视频手机观看网站 | 精品亚洲综合久久中文字幕 | 日本在线看小视频网址 | 亚洲精品tv久久久久久久久久 | 成人免费www在线高清观看 | 香蕉草草久在视频在线播放 | 北条麻妃国产九九九精品视频 | 狠狠干97 | 鲁丝片一区二区三区毛片 | 99黄色网| 日韩欧美中文字幕在线视频 | 欧美日韩一区二区三区在线视频 | 久久网址 | 成年男女免费视频网站播放 |