摘要:你或許在思考數據分發無阻塞作業或者消息推送。所有的這些模式,都是消息隊列的一部分。這部分代碼可以改寫應用作簡單的異步隊列任務的場景,但到了高并發高可用需求下就要進行額外的一些處理。在之后的文章中我會講到的競爭消費模式和的用法。
你或許在思考數據分發、無阻塞作業或者消息推送。或者你想要進行發布/訂閱,異步任務,工作隊列。所有的這些模式,都是消息隊列的一部分。1.安裝RabbmitMQ
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.8/rabbitmq-server-3.6.8-1.el6.noarch.rpm
獲取rpm ,安裝的時候會發現缺少依賴
安裝依賴erlang
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm yum install erlang
注意不要用epel的源直接yum安裝,epel源的erlang版本太低
安裝依賴socat
yum install socat
最后
rpm -Uvh rabbitmq-server-3.6.8-1.el6.noarch.rpm2.php的RabbmitMQ庫
{ "require": { "php-amqplib/php-amqplib": "2.6.*" } }
comoser install3.php+RabbmitMQ helloworld
//send.php require_once __DIR__ . "/vendor/autoload.php"; use PhpAmqpLibConnectionAMQPStreamConnection; use PhpAmqpLibMessageAMQPMessage; $connection = new AMQPStreamConnection("localhost", 5672, "guest", "guest"); $channel = $connection->channel(); $channel->queue_declare("hello", false, false, false, false); $msg = new AMQPMessage("Hello World!"); $channel->basic_publish($msg, "", "hello"); //發送一個消息到hello頻道 echo " [x] Sent "Hello World!" "; $channel->close(); $connection->close();
//receive.php require_once __DIR__ . "/vendor/autoload.php"; use PhpAmqpLibConnectionAMQPStreamConnection; $connection = new AMQPStreamConnection("localhost", 5672, "guest", "guest"); $channel = $connection->channel(); $channel->queue_declare("hello", false, false, false, false); echo " [*] Waiting for messages. To exit press CTRL+C", " "; $callback = function($msg) { echo " [x] Received ", $msg->body, " "; }; //接收hello頻道的消息 $channel->basic_consume("hello", "", false, true, false, false, $callback); while(count($channel->callbacks)) { $channel->wait(); }4.運行
首先運行起來rabbmitMQ server
service rabbmitmq-server start
掛起receive.php接收消息處理
php receive.php
發送消息
##另起一個窗口執行 php send.php
以上代碼就構建了一個簡單的消息隊列
消息從send.php 生產(p) 進入隊列 交由 消費者(c)
注意:當關閉了命令行窗口receive.php 進程將會結束,這個時候就需要借助
supservisor 來將receive.php 腳本后臺運行。這部分代碼可以改寫應用作簡單的異步隊列任務的場景,但到了高并發高可用需求下就要進行額外的一些處理。在之后的文章中我會講到rabbmitMQ的競爭消費模式和superverisor的用法。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31028.html
摘要:最新的已經釋出,更新了,非常贊。不過目前尚未釋出,等待中。初始配置對于一般配置來說,不需要安裝倉庫,本文主要在于希望跟隨的配置流程,緊跟紅帽公司對于服務器的配置說明。 原文來自靜雅齋,轉載請注明出處。 生產環境和開發環境測試環境都不一樣,所以配置都不能隨意,對于大多數情況來說,RHEL 絕對是一個最佳選擇,除了最穩定的內核發布和最全的驅動支持,還能享受到 RHEL 10 年生命周期中 ...
摘要:安裝擴展前面在設置了拓展的安裝路徑,于是此處已自動將加入拓展目錄中,只要在,添加即可查看是否安裝成功安裝擴展根據版本選擇對應的查看是否安裝成功相關文章環境搭建一環境搭建二環境搭建三 安裝的基本步驟官方文檔都有說明:PHP官網安裝文檔 編譯安裝 依賴環境 這一步實際上已經在:LNMP環境搭建(二):Nginx上完成了 [root@localhost ~]# yum -y inst...
摘要:且容器的創建和停止都十分快速,幾乎跟創建和終止原生應用一致。命令是編寫之后使用的。如果是在一個不支持的平臺上運行或者不希望在中運行,也可以使用格式的指令環境變量這個環境亦是用來表明鏡像模板最后的更新時間容器添加卷。 該文章為學習docker 筆記一 docker 簡介 Docker 是基于GO語言實現的開源容器項目,現在主流的Linux系統都支持Docker,Docker 的構想是想要...
閱讀 1814·2021-10-20 13:49
閱讀 1356·2019-08-30 15:52
閱讀 2863·2019-08-29 16:37
閱讀 1033·2019-08-29 10:55
閱讀 3064·2019-08-26 12:14
閱讀 1649·2019-08-23 17:06
閱讀 3235·2019-08-23 16:59
閱讀 2544·2019-08-23 15:42