最新在线看的黄网|伊人久久久久久久网站|日本a视频专区二|欧美A级无码毛片|有扫五av在线播放|好屌日aV在线播放|内射福利视频导航|极品少妇一区二区视频|无吗在线一区播放|性爱黄色视频不卡

php連接RabbitMQ消息隊列

Rabbitmq 是一個功能很強大消息隊列系統(tǒng),使用起來可能不像某些 push 、pop 類型的隊列簡單(比如 redis 的list),Rabbitmq 支持消息的訂閱發(fā)布模式,方便大型系統(tǒng)各個服務(wù)組件之間解耦和通信。我們首先要了解一些基本概念。

1 2 3 4 5 Connection:即連接,?與你日常理解的連接沒有什么不同,比如?redis的連接,mysql的連接 Channel:即通道,?可以理解為一個連接中的子通道,想象一條高速公路,可能是?4車道的,也可能是?8?車道的,這些車道就是?Channel。 Exchange?:?交換機,如果你知道交換機設(shè)備的話,它的原理跟交換機是基本一樣的。 routingkey?:?用來綁定交換機和隊列的一個字符串。發(fā)送消息時需要指定?routingKey,?綁定了此?routingKey的隊列將接收到此消息。 queue隊列:?消息經(jīng)過交換機,最終發(fā)送到隊列中。

????發(fā)布消息:

新建文件send.php

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <?php $conn?=?[ ????//?Rabbitmq?服務(wù)地址 ????'host'?=>?'127.0.0.1', ????//?Rabbitmq?服務(wù)端口 ????'port'?=>?'5672', ????//?Rabbitmq?帳號 ????'login'?=>?'guest', ????//?Rabbitmq?密碼 ????'password'?=>?'guest', ]; //創(chuàng)建連接和channel $conn?=?new?AMQPConnection($conn); if(!$conn->connect())?{ ????die("Cannot?connect?to?the?broker!n"); } $channel?=?new?AMQPChannel($conn); //?用來綁定交換機和隊列 $routingKey?=?'key_1'; $ex?=?new?AMQPExchange($channel); //??交換機名稱 $exchangeName?=?'ex1'; $ex->setName($exchangeName); //?設(shè)置交換機類型 $ex->setType(AMQP_EX_TYPE_DIRECT); //?設(shè)置交換機是否持久化消息 $ex->setFlags(AMQP_DURABLE); for($i=0;?$i<5;?++$i){ ????echo?"Send?Message:".$ex->publish(date('H:i:s')."用戶".$i."注冊"?,?$routingKey?)."n"; }

????消費消息:

新建文件receive.php

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 <?php $conn?=?[ ????//?Rabbitmq?服務(wù)地址 ????'host'?=>?'127.0.0.1', ????//?Rabbitmq?服務(wù)端口 ????'port'?=>?'5672', ????//?Rabbitmq?帳號 ????'login'?=>?'guest', ????//?Rabbitmq?密碼 ????'password'?=>?'guest', ]; //創(chuàng)建連接和channel $conn?=?new?AMQPConnection($conn); if(!$conn->connect())?{ ????die("Cannot?connect?to?the?broker!n"); } $channel?=?new?AMQPChannel($conn); $exchangeName?=?'ex1'; //創(chuàng)建交換機 $ex?=?new?AMQPExchange($channel); $ex->setName($exchangeName); $ex->setType(AMQP_EX_TYPE_DIRECT);?//direct類型 $ex->setFlags(AMQP_DURABLE);?//持久化 //??創(chuàng)建隊列 $queueName?=?'queue1'; $q?=?new?AMQPQueue($channel); $q->setName($queueName); $q->setFlags(AMQP_DURABLE); $q->declareQueue(); //?用于綁定隊列和交換機,跟?send.php?中的一致。 $routingKey?=?'key_1'; $q->bind($exchangeName,??$routingKey); //接收消息 $q->consume(function?($envelope,?$queue)?{ ????$msg?=?$envelope->getBody(); ????echo?$msg."n";?//處理消息 },?AMQP_AUTOACK); $conn->disconnect();

????運行代碼:

啟動rabbitmq服務(wù)。

一開始隊列是不存在的,我們需要先啟動 consume.php 來初始化隊列,打開命令行頁面,運行

1 php?receive.php

啟動后 , php receive.php 將阻塞監(jiān)聽隊列消息。

然后打開新的命令行窗口運行:

1 php?send.php

然后在新 receive.php 所在的終端窗口將看到接收到的消息。

阿里企業(yè)郵箱、網(wǎng)易企業(yè)郵箱、新網(wǎng)企業(yè)郵箱
【標準版】400元/年/5用戶/無限容量
【外貿(mào)版】500元/年/5用戶/無限容量
其它服務(wù):網(wǎng)站建設(shè)、企業(yè)郵箱、數(shù)字證書ssl、400電話、
聯(lián)系方式:電話:13714666846 微信同號

聲明:本站所有作品(圖文、音視頻)均由用戶自行上傳分享,或互聯(lián)網(wǎng)相關(guān)知識整合,僅供網(wǎng)友學(xué)習(xí)交流,若您的權(quán)利被侵害,請聯(lián)系 管理員 刪除。

本文鏈接:http://www.goalq.com.cn/article_32734.html