RabbitMQ實戰教程(一) : 安裝及相關概念介紹 由於本人只在 安裝 服務 ,其他系統安裝暫時沒有涉及,如果有需要請自行搜索安裝教程. . . 1 . Windows 安裝 安裝需要先安裝 ,再安裝 第一步:安裝 ,由於 是用 編寫的,所以在安裝 之前要先安裝 下載地址: 下載最新版本即可,例 ...
RabbitMQ實戰教程(一) : 安裝及相關概念介紹
- 由於本人只在
Windows
安裝RabbitMQ
服務 ,其他系統安裝暫時沒有涉及,如果有需要請自行搜索安裝教程. . .
1 . Windows 安裝
Windows
安裝需要先安裝Erlang
,再安裝RabbitMQ
第一步:安裝
Erlang OTP
,由於RabbitMQ
是用Erlang
編寫的,所以在安裝RabbitMQ
之前要先安裝Erlang
下載地址:http://www.erlang.org/downloads 下載最新版本即可,例如OTP 21.0.1 Windows 64-bit Binary File
, 下載完成後解壓,雙擊otp_win64_21.0.1.exe
一路next即可,安裝成功後需要配置環境變數,可以新建一個變數,例如ERLANG_HOME=D:\erl9.2
,最後將環境變數追加到Path中去Path中追加:%ERLANG_HOME\bin%
第二步:安裝
RabbitMQ
,在官網上下載最新的RabbitMQ
(http://www.rabbitmq.com/) 雙擊rabbitmq-server-3.7.6
一路next即可,安裝成功後同樣需要配置環境變數,將D:\RabbitMQ\rabbitmq_server-3.6.10\sbin
追加到Path中 .rabbitmq-server-3.7.6
版本是不需要安裝RabbitMQ Management
插件 ,好像 3.7 之前的版本是需要安裝RabbitMQ Management
插件的 .第三步 : 安裝成功後打開瀏覽器輸入以下地址
http://localhost:15672/
就可以看下如下頁面 :使用訪客賬號(username : guest , password : guest) 就可登錄進去 ,頁面如下所示 :
至此
RabbitMQ
服務安裝完成
2 . 相關概念介紹
2.1 簡介
RabbitM
Q是一個開源的AMQP
實現,伺服器端用Erlang語言編寫,支持多種客戶端。用於在分散式系統中存儲轉發消息,在易用性、擴展性、高可用性等方面表現不俗,消息隊列是一種應用系統之間的通信方法,是通過讀寫出入隊列的消息來通信(RPC則是通過直接調用彼此來通信的)
AMQP
(Advanced Message Queuing Protocol)高級消息隊列協議是應用層協議的一個開放標準,為面向消息的中間件設計。消息中間件主要用於組件之間的解耦,消息的發送者無需知道消息使用者的存在,反之亦然。AMQP
的主要特征是面向消息、隊列、路由(包括點對點和發佈/訂閱)、可靠性、安全。
2.2 基本概念
ConnectionFactory
(連接工廠) : 生產Connection
的工廠 .Connection
(連接) : 是RabbitMQ
的socket
的長連接,它封裝了socket
的協議相關部分邏輯.Channel
(通道) : 是建立在Connection
連接之上的一種輕量級的連接,我們大部分的業務操作是Channel
這個介面中完成的 ,包括定義隊列的聲明queueDirect
、交換機聲明exchangeDeclare
、隊列的綁定queueBind
、發佈消息的basicPublish
、消費消息的basicConsume
等 . 如果把Connection
比作一條光纖電纜的話,那麼Channel
通道就比作成光纖電纜中其中的一束光纖 . 一個Connection
可以創建任意數量的Channel
通道 .Producet
(生產者) : 生產者用於發佈消息 .Exchange
(交換機): 生產者會將消息發送到交換機,然後交換機通過路由路由規則將消息路由到匹配到隊列中 .RoutingKey
(路由鍵) : 一個String
,用於定義路由規則,在隊列綁定的時候需要指定路由鍵,在生產者發佈消息時需要指定路由鍵,當消息的路由鍵和隊列綁定的路由鍵相匹配時,消息就會發送到該隊列.Queue
(隊列) : 用於存儲消息容器,可以看成一個有序的數組,生產者生產的消息會發送到交換機中,最終交換機將消息存儲到某個或某些隊列中,隊列可被消費者訂閱,消費者從訂閱的隊列中獲取消息 .Binding
(綁定) :Binding
並不是一個概念,而是一種操作,RabbitMQ
中通過綁定,以路由鍵作為橋梁將Exchange
與Queue
關聯起來(Exchange
-->RoutingKey
-->Queue
) ,這樣RabbitMQ
就知道如何正確地將消息路由到指定的隊列了,通過queueBind
方法Exchange
、RoutingKey
、Queue
綁定起來 .Consumer
(消費者) : 用於從隊列中獲取消息,消費者只需要關註隊列即可,不需要關註交換機和路由鍵,消費者可以通過basicConsume
(訂閱模式可以從隊列中一直持續的自動接收消息)或者basicGet
(先訂閱消息,然後獲取單條消息,再然後取消訂閱,也就是說basicGet
一次只能獲取一條消息,如果還想獲取下一條還要再次調用basicGet
來從隊列中獲取消息) .vhost
(虛擬主機) :RabbitMQ
通過虛擬主機(virtual host
)來分發消息 ,擁有自己獨立的許可權控制, 不同vhost
之間是隔離的、單獨的 ,vhost
是許可權控制的基本單位,用戶只能訪問與之綁定的vhost ,預設vhost
: "/" ,預設用戶 "guest" ,預設密碼 "guest" , 來訪問預設的vhost
.
下麵說明瞭生產將消息發送到交換機中,然後又路由到指定的隊列中. 消息者從指定的隊列中消費消息