摘要:基礎教程注本文是對眾多博客的學習和總結,可能存在理解錯誤。請帶著懷疑的眼光,同時如果有錯誤希望能指出。安裝庫這里我們首先將消息推入隊列,然后消費者從隊列中去除消息進行消費。
RabbitMQ 基礎教程(1) - Hello World
注:本文是對眾多博客的學習和總結,可能存在理解錯誤。請帶著懷疑的眼光,同時如果有錯誤希望能指出。
如果你喜歡我的文章,可以關注我的私人博客:http://blog-qeesung.rhcloud.com/
RabbitMQ是一個message broker,消息的生產者(producer)負責生產消息,然后將消息傳入傳入queue(消息隊列),消費者(consumer)從消息隊列中取出消息進行處理。
簡單來說,消息隊列就像郵局一樣,我們將信封(消息)投遞到郵局的信筒,然后信差根據信封上面的地址將信封投遞到對應的地址(消費者)。
如下所示:
queue +---------------+ +--+--+--+--+--+--+--+ +---------------+ | producer |-----> |m1|m2| ... | | | |------>| consumer | +---------------+ +--+--+--+--+--+--+--+ +---------------+安裝RabbitMQ
RabbitMQ是基于Erlang來開發的,首先安裝Erlang的運行環境
安裝Erlang
Erlang官網下載并安裝
安裝RabbitMQ
配置RabbitMQRabbitMQ官網下載并安裝
博主其實也是RabbitMQ小白,命令行工具不太熟悉,慶幸的是RabbitMQ為我們提供web配置頁面,但是要進行一些簡單的配置。
打開RabbitMQ Command Prompt 或 直接通過cmd進入到RabbitMQ Server的安裝目錄下的rabbitmq_server-*/sbin路徑
執行下面的命令:
rabbitmq-plugins.bat enable rabbitmq_management
rabbitmq-service.bat stop
rabbitmq-service.bat install
rabbitmq-service.bat start
最后在http://localhost:15672/就可以訪問RabbitMQ為我們搭建起來的Web服務器,初始化用戶名和密碼是guest和guest
RabbitMQ支持多種語言,包括Python,PHP,nodejs等等,我們這里的例子就采用Nodejs。
安裝RabbitMQ庫
npm install amqplib
這里我們首先將消息推入隊列,然后消費者從隊列中去除消息進行消費。
生產消息var amqp = require("amqplib/callback_api"); // 連接上RabbitMQ服務器 amqp.connect("amqp://localhost", function(err, conn) { conn.createChannel(function(err, ch) { var q = "hello"; // 聲明隊列,然后將隊列中的消息持久化取消 ch.assertQueue(q, {durable: false}); // 將字符串存入Buffer中,并推入隊列 ch.sendToQueue(q, new Buffer("Hello World!")); console.log(" [x] Sent "Hello World!""); }); }); /** $ node rabbit-producer.js [x] Sent "Hello World!" */
現在消息已經發送到RabbitMQ的隊列中
消費消息var amqp = require("amqplib/callback_api"); amqp.connect("amqp://localhost", function(err, conn) { conn.createChannel(function(err, ch) { var q = "hello"; // 聲明已經存在的隊列 ch.assertQueue(q, {durable: false}); console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", q); // 監聽隊列上面的消息 ch.consume(q, function(msg) { console.log(" [x] Received %s", msg.content.toString()); }, {noAck: true}); }); }); /** $ node rabbit-consumer.js [*] Waiting for messages in hello. To exit press CTRL+C [x] Received Hello World! */
在本文中知識介紹了RabbitMQ的一些基礎知識,RabbitMQ還有一些復雜東西,我們將會在后面的文章中一一介紹。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79586.html
摘要:在中間的框是一個隊列的消息緩沖區,保持代表的消費。本教程介紹,這是一個開放的通用的協議消息。我們將在本教程中使用,解決依賴管理。發送者將連接到,發送一條消息,然后退出。注意,這與發送發布的隊列匹配。 介紹 RabbitMQ是一個消息代理器:它接受和轉發消息。你可以把它當作一個郵局:當你把郵件放在信箱里時,你可以肯定郵差先生最終會把郵件送到你的收件人那里。在這個比喻中,RabbitMQ就...
摘要:進行插入操作的端稱為隊尾,進行刪除操作的端稱為對頭。還有個專業術語要了解下生產者發送消息的應用程序被稱為生產者。消費者接收消息的應用程序被稱為消費者。參考鏈接下安裝及操作常用命令譯實戰教程一你是否聽說過或者使用過隊列? 你是否聽說過或者使用過消息隊列? 你是否聽說過或者使用過RabbitMQ? 提到這幾個詞,用過的人,也許覺得很簡單,沒用過的人,也許覺得很復雜,至少在我沒使用消息隊列之前,聽...
摘要:每當我們收到一條消息,這個回調函數就被皮卡庫調用。接下來,我們需要告訴這個特定的回調函數應該從我們的隊列接收消息為了讓這個命令成功,我們必須確保我們想要訂閱的隊列存在。生產者計劃將在每次運行后停止歡呼我們能夠通過發送我們的第一條消息。 源碼:https://github.com/ltoddy/rabbitmq-tutorial 介紹 RabbitMQ是一個消息代理:它接受和轉發消息。你...
摘要:我們將任務封裝為消息并將其發送到隊列。為了確保消息永不丟失,支持消息確認。沒有任何消息超時當消費者死亡時,將重新傳遞消息。發生這種情況是因為只在消息進入隊列時調度消息。這告訴一次不要向工作人員發送多個消息。 源碼:https://github.com/ltoddy/rabbitmq-tutorial 工作隊列 showImg(https://segmentfault.com/img/r...
摘要:平均每個消費者將得到相同數量的消息。消息確認完成任務可能需要幾秒鐘。為了確保消息不會丟失,支持消息確認。沒有任何消息超時當這個消費者中止了,將會重新分配消息時。這是因為只是調度消息時,消息進入隊列。 showImg(https://segmentfault.com/img/bVXNuN?w=332&h=111); 介紹 在上一個 Hello World 教程中,我們編寫了從指定隊列發送...
閱讀 1169·2021-11-11 16:55
閱讀 3059·2021-08-16 11:00
閱讀 2902·2019-08-30 15:56
閱讀 3441·2019-08-30 11:24
閱讀 3422·2019-08-30 11:05
閱讀 3538·2019-08-29 15:15
閱讀 2621·2019-08-26 13:57
閱讀 2574·2019-08-23 18:17