日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 连接 Rabbitmq 实例代码(亲测通过)

發(fā)布時間:2024/9/20 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 连接 Rabbitmq 实例代码(亲测通过) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

接下來我們用 php 連接 rabbitmq 玩一玩。
還沒有安裝 rabbitmq ,請參考?Rabbitmq 安裝
還沒有安裝 PHP 的 AMQP 擴(kuò)展,參考?PHP AMQP 擴(kuò)展安裝

一些概念

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

Vhost: 可以先不深究,固定為?/
Connection:即連接, 與你日常理解的連接沒有什么不同,比如 redis的連接,mysql的連接
Channel:即通道, 可以理解為一個連接中的子通道,想象一條高速公路,可能是 4車道的,也可能是 8 車道的,這些車道就是 Channel。

Exchange?: 交換機(jī),如果你知道交換機(jī)設(shè)備的話,它的原理跟交換機(jī)是基本一樣的。
routingkey?: 用來綁定交換機(jī)和隊列的一個字符串。發(fā)送消息時需要指定 routingKey, 綁定了此 routingKey的隊列將接收到此消息。
queue隊列: 消息經(jīng)過交換機(jī),最終發(fā)送到隊列中。

發(fā)布消息

<?php $conn = [// Rabbitmq 服務(wù)地址'host' => '127.0.0.1',// Rabbitmq 服務(wù)端口'port' => '5672',// Rabbitmq 帳號'login' => 'admin',// Rabbitmq 密碼'password' => 'admin','vhost'=>'/' ];//創(chuàng)建連接和channel $conn = new AMQPConnection($conn); if(!$conn->connect()) {die("Cannot connect to the broker!\n"); } $channel = new AMQPChannel($conn);// 用來綁定交換機(jī)和隊列 $routingKey = 'key_1';$ex = new AMQPExchange($channel); // 交換機(jī)名稱 $exchangeName = 'ex1'; $ex->setName($exchangeName);// 設(shè)置交換機(jī)類型 $ex->setType(AMQP_EX_TYPE_DIRECT); // 設(shè)置交換機(jī)是否持久化消息 $ex->setFlags(AMQP_DURABLE); $ex->declare();for($i=0; $i<5; ++$i){echo "Send Message:".$ex->publish(date('H:i:s')."用戶".$i."注冊" , $routingKey )."\n"; }

以上代碼保存為?send.php。

消費消息

<?php $conn = [// Rabbitmq 服務(wù)地址'host' => '127.0.0.1',// Rabbitmq 服務(wù)端口'port' => '5672',// Rabbitmq 帳號'login' => 'admin',// Rabbitmq 密碼'password' => 'admin','vhost'=>'/' ];//創(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)建交換機(jī) $ex = new AMQPExchange($channel); $ex->setName($exchangeName);$ex->setType(AMQP_EX_TYPE_DIRECT); //direct類型 $ex->setFlags(AMQP_DURABLE); //持久化 $ex->declare();// 創(chuàng)建隊列 $queueName = 'queue1'; $q = new AMQPQueue($channel); $q->setName($queueName); $q->setFlags(AMQP_DURABLE); $q->declareQueue();// 用于綁定隊列和交換機(jī),跟 send.php 中的一致。 $routingKey = 'key_1'; $q->bind($exchangeName, $routingKey);//接收消息 $q->consume(function ($envelope, $queue) {$msg = $envelope->getBody();echo $msg."\n"; //處理消息 }, AMQP_AUTOACK);$conn->disconnect();

以上代碼保存為?consume.php。

運行代碼

一開始隊列是不存在的,我們需要先啟動?consume.php?來初始化隊列,打開終端,運行

php consume.php

啟動后 ,?php consume.php?將阻塞監(jiān)聽隊列消息。
然后打開新終端窗口運行:

php send.php

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

轉(zhuǎn)載請注明:大后端???PHP 連接 Rabbitmq 實例代碼

來源:https://www.baidu.com/link?url=7Lk3eQ1I3B-yomnvOt1qIw1MElyTF2wS8UzV2cz433GlMBwXknO-dxSyMY9W0SgBUja3M1k2_qJnFMKjhuq6fa&wd=&eqid=e6cefb0b00035d62000000065c9c69b5

總結(jié)

以上是生活随笔為你收集整理的PHP 连接 Rabbitmq 实例代码(亲测通过)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。