thinkPHP5如何使用rabbitmq?
安裝好 tp5 的 rabbitmq 擴(kuò)展后,在項(xiàng)目根目錄文件添加文件 rabbitmq.php 引導(dǎo)啟動(dòng) rabbitmq。
<?php define('APP_PATH', __DIR__ . '/application/'); define('BIND_MODULE','rabbitmq/Client'); // 加載框架引導(dǎo)文件 require __DIR__ . '/thinkphp/start.php';
生成者
private function queueEvent($message) { // error_log("\n******" . date("His") . "********\n" . print_r($message, 1) . "\n*************\n", 3, 'messag_event.log'); dump($message); //設(shè)置你的連接 $conn_args = array('host' => 'ip', 'port' => '5672', 'login' => 'ymq', 'password' => '123456', 'vhost'=>'/'); $content = $message; //創(chuàng)建連接和channel $conn = new \AMQPConnection($conn_args); if (!$conn->connect()) { die("Cannot connect to the broker!\n"); } $channel = new \AMQPChannel($conn); //創(chuàng)建交換機(jī) $e_name = 'MQTT_device_event'; //交換機(jī)名 $ex = new \AMQPExchange($channel); $ex->setName($e_name); // $ex->setType(AMQP_EX_TYPE_TOPIC); //direct類型 $ex->setType(AMQP_EX_TYPE_DIRECT); //direct類型 $ex->setFlags(AMQP_DURABLE); //持久化 $ex->declareExchange(); }
相關(guān)推薦:《ThinkPHP教程》
運(yùn)行 php 目錄運(yùn)行生產(chǎn)者
消費(fèi)者
public function index() { //連接RabbitMQ $conn_args = array('host' => 'ip', 'port' => '5672', 'login' => 'ymq', 'password' => '123456', 'vhost' => '/'); $e_name = 'MQTT_device_event'; //交換機(jī)名 $q_name = 'q_event'; //隊(duì)列名 $k_route = 'key_event'; //路由key //創(chuàng)建連接和channel $conn = new \AMQPConnection($conn_args); if (!$conn->connect()) { die("Cannot connect to the broker!\n"); } $channel = new \AMQPChannel($conn); //創(chuàng)建交換機(jī) $ex = new \AMQPExchange($channel); $ex->setName($e_name); $ex->setType(AMQP_EX_TYPE_DIRECT); //direct類型 $ex->setFlags(AMQP_DURABLE); //持久化 $ex->declareExchange(); //創(chuàng)建隊(duì)列 $q = new \AMQPQueue($channel); $q->setName($q_name); $q->setFlags(AMQP_DURABLE); //持久化 $q->declareQueue(); //最好隊(duì)列object在這里declare()下,否則如果是新的queue會(huì)報(bào)錯(cuò) //綁定交換機(jī)與隊(duì)列,并指定路由鍵,可以多個(gè)路由鍵 $q->bind($e_name, $k_route); //$q->bind($e_name, 'key_33'); //阻塞模式接收消息 echo "Message:\n"; while(True){ $q->consume(function($envelope, $queue) { $msg = $envelope->getBody(); //處理數(shù)據(jù) echo $msg . PHP_EOL; //處理消息 $queue->ack($envelope->getDeliveryTag()); //手動(dòng)發(fā)送ACK應(yīng)答 }); //$q->consume('processMessage', AMQP_AUTOACK); //自動(dòng)ACK應(yīng)答 } $conn->disconnect(); }
執(zhí)行下命令 php rabbitmq
啟動(dòng)即可
查看隊(duì)列是否被消費(fèi)
登錄 http://127.0.0.115672/#/queues? 地址
以上是thinkPHP5如何使用rabbitmq的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

如何利用React和RabbitMQ構(gòu)建可靠的消息傳遞應(yīng)用引言:現(xiàn)代化的應(yīng)用程序需要支持可靠的消息傳遞,以實(shí)現(xiàn)實(shí)時(shí)更新和數(shù)據(jù)同步等功能。React是一種流行的JavaScript庫,用于構(gòu)建用戶界面,而RabbitMQ是一種可靠的消息傳遞中間件。本文將介紹如何結(jié)合React和RabbitMQ構(gòu)建可靠的消息傳遞應(yīng)用,并提供具體的代碼示例。RabbitMQ概述:

如何保證消息不丟失rabbitmq消息投遞路徑生產(chǎn)者->交換機(jī)->隊(duì)列->消費(fèi)者總的來說分為三個(gè)階段。1.生產(chǎn)者保證消息投遞可靠性。2.mq內(nèi)部消息不丟失。3.消費(fèi)者消費(fèi)成功。什么是消息投遞可靠性簡單點(diǎn)說就是消息百分百發(fā)送到消息隊(duì)列中。我們可以開啟confirmCallback生產(chǎn)者投遞消息后,mq會(huì)給生產(chǎn)者一個(gè)ack.根據(jù)ack,生產(chǎn)者就可以確認(rèn)這條消息是否發(fā)送到mq.開啟confirmCallback修改配置文件#NONE:禁用發(fā)布確認(rèn)模式,是默認(rèn)值,CORRELATED:

如何在PHP中使用RabbitMQ實(shí)現(xiàn)分布式消息處理引言:在大規(guī)模應(yīng)用程序開發(fā)中,分布式系統(tǒng)已成為一個(gè)常見的需求。分布式消息處理是這樣的一種模式,通過將任務(wù)分發(fā)到多個(gè)處理節(jié)點(diǎn),可以提高系統(tǒng)的效率和可靠性。RabbitMQ是一個(gè)開源的,可靠的消息隊(duì)列系統(tǒng),它采用AMQP協(xié)議來實(shí)現(xiàn)消息的傳遞和處理。在本文中,我們將介紹如何在PHP中使用RabbitMQ來實(shí)現(xiàn)分布

隨著現(xiàn)代應(yīng)用程序的復(fù)雜性增加,消息傳遞已成為一種強(qiáng)大的工具。在這個(gè)領(lǐng)域,RabbitMQ已成為一個(gè)非常受歡迎的消息代理,可以用于在不同的應(yīng)用程序之間傳遞消息。在這篇文章中,我們將探討如何在Go語言中使用RabbitMQ。本指南將涵蓋以下內(nèi)容:RabbitMQ簡介RabbitMQ安裝RabbitMQ基礎(chǔ)概念Go語言中的RabbitMQ入門RabbitMQ和Go

隨著互聯(lián)網(wǎng)時(shí)代的到來,消息隊(duì)列系統(tǒng)變得越來越重要。它可以使不同的應(yīng)用之間實(shí)現(xiàn)異步操作、降低耦合度、提高可擴(kuò)展性,進(jìn)而提升整個(gè)系統(tǒng)的性能和用戶體驗(yàn)。在消息隊(duì)列系統(tǒng)中,RabbitMQ是一個(gè)強(qiáng)大的開源消息隊(duì)列軟件,它支持多種消息協(xié)議、被廣泛應(yīng)用于金融交易、電子商務(wù)、在線游戲等領(lǐng)域。在實(shí)際應(yīng)用中,往往需要將RabbitMQ和其他系統(tǒng)進(jìn)行集成。本文將介紹如何使用sw

現(xiàn)在越來越多的企業(yè)開始采用微服務(wù)架構(gòu)模式,而在這個(gè)架構(gòu)中,消息隊(duì)列成為一種重要的通信方式,其中RabbitMQ被廣泛應(yīng)用。而在go語言中,go-zero是近年來崛起的一種框架,它提供了很多實(shí)用的工具和方法,讓開發(fā)者更加輕松地使用消息隊(duì)列,下面我們將結(jié)合實(shí)際應(yīng)用,來介紹go-zero和RabbitMQ的使用方法和應(yīng)用實(shí)踐。1.RabbitMQ概述Rabbit

去除thinkphp5標(biāo)題欄icon的方法:1、找到thinkphp5框架public下的favicon.ico文件;2、刪除該文件或者選擇另一張圖片命名改為favicon.ico,并替換原favicon.ico文件即可。

Golang與RabbitMQ實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)同步的解決方案引言:當(dāng)今時(shí)代,隨著互聯(lián)網(wǎng)的普及和數(shù)據(jù)量的爆發(fā)式增長,實(shí)時(shí)數(shù)據(jù)的同步變得越來越重要。為了解決數(shù)據(jù)異步傳輸和數(shù)據(jù)同步的問題,許多公司開始采用消息隊(duì)列的方式來實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步。本文將介紹基于Golang和RabbitMQ的實(shí)時(shí)數(shù)據(jù)同步的解決方案,并提供具體的代碼示例。一、什么是RabbitMQ?Rabbi
