摘要:概述是一款消息隊(duì)列中間件。他提供了幾乎覆蓋所有語言的與文檔,簡直強(qiáng)大的不的了。要詳細(xì)的去了解學(xué)習(xí),我建議還是看官方文檔吧。對(duì)文章有什么問題或疑問,歡迎在評(píng)論區(qū)留言。
概述
RabbitMQ是一款消息隊(duì)列中間件。他提供了幾乎覆蓋所有語言的SDK與文檔,簡直強(qiáng)大的不的了。要詳細(xì)的去了解學(xué)習(xí)RabbitMQ,我建議還是看官方文檔吧。http://www.rabbitmq.com/getst...
消息隊(duì)列有以下幾個(gè)基本用途
異步處理
應(yīng)用解耦
流量削峰
系統(tǒng)架構(gòu)
消息隊(duì)列的這幾個(gè)用途我會(huì)在后續(xù)的文章以真實(shí)案例去表述生產(chǎn)者 創(chuàng)建RabbitMQ鏈接
$connection = new AMQPStreamConnection("localhost", 5672, "guest", "guest"); $channel = $connection->channel ();
與鏈接一個(gè)數(shù)據(jù)庫概念差不多
創(chuàng)建一個(gè)隊(duì)列聲明$channel->queue_declare ("hello");
創(chuàng)建多個(gè)隊(duì)列與創(chuàng)建多個(gè)數(shù)據(jù)庫一樣,hello則是隊(duì)列名
創(chuàng)建一條消息到隊(duì)列$message = new AMQPMessage("Hello World!");發(fā)布消息到隊(duì)列
$channel->basic_publish ($message, "", "hello");
hello 是上面創(chuàng)建的隊(duì)列聲明
關(guān)閉鏈接$channel->close (); $connection->close ();
釋放資源
消費(fèi)者 創(chuàng)建RabbitMQ鏈接$connection = new AMQPStreamConnection("localhost", 5672, "guest", "guest"); $channel = $connection->channel ();
與鏈接一個(gè)數(shù)據(jù)庫概念差不多
創(chuàng)建一個(gè)隊(duì)列聲明$channel->queue_declare ("hello");
創(chuàng)建多個(gè)隊(duì)列與創(chuàng)建多個(gè)數(shù)據(jù)庫一樣,hello則是隊(duì)列名
消費(fèi)$channel->basic_consume ("hello", "", false, true, false, false, function ($msg) { echo " [x] Received ", $msg->body, " "; });
通過回調(diào)函數(shù)處理消息隊(duì)列
等待while (count ($channel->callbacks)) { $channel->wait (); }
無消息時(shí),掛起保持等待狀態(tài)
關(guān)閉鏈接$channel->close (); $connection->close ();
釋放資源
完整的案例完整的按鈕則是上面所有代碼的整理
生產(chǎn)者$connection = new AMQPStreamConnection("localhost", 5672, "guest", "guest"); $channel = $connection->channel (); $channel->queue_declare ("hello"); $message = new AMQPMessage("Hello World!"); $channel->basic_publish ($message, "", "hello"); $channel->close (); $connection->close ();消費(fèi)者
$connection = new AMQPStreamConnection("localhost", 5672, "guest", "guest"); $channel = $connection->channel (); $channel->queue_declare ("hello"); // basic_consume 方法第7個(gè)方法可以直接傳入函數(shù) $channel->basic_consume ("hello", "", false, true, false, false, function ($msg) { echo " [x] Received ", $msg->body, " "; }); while (count ($channel->callbacks)) { $channel->wait (); } $channel->close (); $connection->close ();執(zhí)行
php {生產(chǎn)者}.php php {消費(fèi)者}.php其他
RabbitMQ支持多線程處理消息隊(duì)列,所有你可以開啟多個(gè)消費(fèi)者去執(zhí)行消息隊(duì)列內(nèi)的任務(wù)。你可以像我這樣
如果你感覺RabbitMQ這玩意還需要安裝啥的感覺特麻煩,那你可以看下我的Laravel隊(duì)列如何簡單的玩起來。致謝
https://segmentfault.com/a/11...
感謝你看完我這篇文章,純手記的一篇文章,官方文檔對(duì)新手的理解造成很多的誤解,所以整理此文檔,盡量避免新手“進(jìn)”坑吧。對(duì)文章有什么問題或疑問,歡迎在評(píng)論區(qū)留言。謝謝
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28980.html
摘要:小程序云開發(fā)之初體驗(yàn)前言選型的時(shí)候前后端都準(zhǔn)備自己搞,然后選中方案,搭建的時(shí)候,發(fā)現(xiàn)官方文檔沒有了,后來問客服,客服說方案是存量用戶使用的,相關(guān)文檔已經(jīng)下線說是現(xiàn)在主推云開發(fā),然后帶著疑問和懵逼臉轉(zhuǎn)向了云開發(fā)最后發(fā)現(xiàn)云開發(fā)的我是幸福的 小程序云開發(fā)之初體驗(yàn) 前言:選型的時(shí)候前后端都準(zhǔn)備自己搞,然后選中wafer方案,搭建的時(shí)候,發(fā)現(xiàn)官方文檔沒有了,后來問客服,客服說wafer方案是存量...
摘要:小程序云開發(fā)之初體驗(yàn)前言選型的時(shí)候前后端都準(zhǔn)備自己搞,然后選中方案,搭建的時(shí)候,發(fā)現(xiàn)官方文檔沒有了,后來問客服,客服說方案是存量用戶使用的,相關(guān)文檔已經(jīng)下線說是現(xiàn)在主推云開發(fā),然后帶著疑問和懵逼臉轉(zhuǎn)向了云開發(fā)最后發(fā)現(xiàn)云開發(fā)的我是幸福的 小程序云開發(fā)之初體驗(yàn) 前言:選型的時(shí)候前后端都準(zhǔn)備自己搞,然后選中wafer方案,搭建的時(shí)候,發(fā)現(xiàn)官方文檔沒有了,后來問客服,客服說wafer方案是存量...
摘要:小程序云開發(fā)之初體驗(yàn)前言選型的時(shí)候前后端都準(zhǔn)備自己搞,然后選中方案,搭建的時(shí)候,發(fā)現(xiàn)官方文檔沒有了,后來問客服,客服說方案是存量用戶使用的,相關(guān)文檔已經(jīng)下線說是現(xiàn)在主推云開發(fā),然后帶著疑問和懵逼臉轉(zhuǎn)向了云開發(fā)最后發(fā)現(xiàn)云開發(fā)的我是幸福的 小程序云開發(fā)之初體驗(yàn) 前言:選型的時(shí)候前后端都準(zhǔn)備自己搞,然后選中wafer方案,搭建的時(shí)候,發(fā)現(xiàn)官方文檔沒有了,后來問客服,客服說wafer方案是存量...
閱讀 2277·2021-09-30 09:48
閱讀 3652·2021-09-24 10:27
閱讀 1810·2021-09-22 15:32
閱讀 2037·2021-08-09 13:44
閱讀 3588·2019-08-30 15:55
閱讀 1061·2019-08-29 17:12
閱讀 2023·2019-08-29 17:05
閱讀 2932·2019-08-29 13:43