spring-rabbitMQ
“消息隊(duì)列”是在消息的傳輸過程中保存消息的容器。消息隊(duì)列管理器在將消息從它的源中繼到它的目標(biāo)時(shí)充當(dāng)中間人。
隊(duì)列的主要目的是提供路由并保證消息的傳遞;如果發(fā)送消息時(shí)接收者不可用,消息隊(duì)列會(huì)保留消息,直到可以成功地傳遞它。
隊(duì)列定義?
隊(duì)列是一個(gè)“先進(jìn)先出”容器。你放東西的順序也取東西的順序。LinkedList有支持隊(duì)列功能的方法,所以它也能當(dāng)作隊(duì)列來使用。
隊(duì)列(Queue)是只允許在一端進(jìn)行插入,而在另一端進(jìn)行刪除的運(yùn)算受限的線性表
優(yōu)點(diǎn):解耦 冗余 擴(kuò)展性 靈活性 & 峰值處理能力 可恢復(fù)性 送達(dá)保證 排序保證 緩沖 理解數(shù)據(jù)流 異步通信
消息傳遞:
為了實(shí)現(xiàn)負(fù)載均衡,可以
在消費(fèi)者端通知RabbitMQ,一個(gè)消息處理完之后才會(huì)接受下一個(gè)消息。
RabbitMQ與SpringMVC集成 實(shí)現(xiàn)發(fā)送消息隊(duì)列
RabbitMQ是消息代理——一個(gè)消息傳遞的中介。它給您的應(yīng)用程序中一個(gè)共同的平臺(tái)來發(fā)送和接收消息,和一個(gè)安全的地方住,
直到收到你的消息。
Broker:簡(jiǎn)單來說就是消息隊(duì)列服務(wù)器實(shí)體。
Exchange:消息交換機(jī),它指定消息按什么規(guī)則,路由到哪個(gè)隊(duì)列。
Queue:消息隊(duì)列載體,每個(gè)消息都會(huì)被投入到一個(gè)或多個(gè)隊(duì)列。
Binding:綁定,它的作用就是把exchange和queue按照路由規(guī)則綁定起來。
Routing Key:路由關(guān)鍵字,exchange根據(jù)這個(gè)關(guān)鍵字進(jìn)行消息投遞。
vhost:虛擬主機(jī),一個(gè)broker里可以開設(shè)多個(gè)vhost,用作不同用戶的權(quán)限分離。
producer:消息生產(chǎn)者,就是投遞消息的程序。
consumer:消息消費(fèi)者,就是接受消息的程序。
channel:消息通道,在客戶端的每個(gè)連接里,可建立多個(gè)channel,每個(gè)channel代表一個(gè)會(huì)話任務(wù)。
消息隊(duì)列的使用過程大概如下:
(1)客戶端連接到消息隊(duì)列服務(wù)器,打開一個(gè)channel。
(2)客戶端聲明一個(gè)exchange,并設(shè)置相關(guān)屬性。
(3)客戶端聲明一個(gè)queue,并設(shè)置相關(guān)屬性。
(4)客戶端使用routing key,在exchange和queue之間建立好綁定關(guān)系。
(5)客戶端投遞消息到exchange。
工作流程:
當(dāng)客戶端啟動(dòng)時(shí),它創(chuàng)建了匿名的exclusive callback queue.
客戶端的RPC請(qǐng)求時(shí)將同時(shí)設(shè)置兩個(gè)properties: reply_to設(shè)置為 callback queue; correlation_id 設(shè)置為每個(gè)request一個(gè)獨(dú)一無二的值.
請(qǐng)求將被發(fā)送到an rpc_queue queue.
RPC端或者說server一直在等待那個(gè)queue的請(qǐng)求。當(dāng)請(qǐng)求到達(dá)時(shí),它將通過在reply_to指定的queue回復(fù)一個(gè)message給client。
client一直等待callback queue的數(shù)據(jù)。當(dāng)message到達(dá)時(shí),它將檢查 correlation_id 的值,如果值和它request發(fā)送時(shí)的一致那么就將返回響應(yīng)。
安裝 RabbitMq 消息隊(duì)列:
1, 下載 安裝 Erlang 【Erlang運(yùn)行時(shí)環(huán)境是一個(gè)虛擬機(jī),有點(diǎn)像Java虛擬機(jī),這樣代碼一經(jīng)編譯,同樣可以隨處運(yùn)行。】
運(yùn)行直接安裝,更換安裝目錄, 配置環(huán)境變量 ERLANG_HOME C:Program Files (x86)erl5.9 添加到PATH %ERLANG_HOME%bin;
2, 下載 安裝 RabbitMQ
運(yùn)行直接安裝,更換安裝目錄, 配置環(huán)境變量 D:Program FilesRabbitMQ Serverrabbitmq_server-2.8.0
添加到PATH %RABBITMQ_SERVER%sbin;
到 D:Program FilesRabbitMQ Serverrabbitmq_server-2.8.0sbin 運(yùn)行 rabbitmq-service.bat
運(yùn)行:
找到sbin/目錄,運(yùn)行程序:
/usr/local/sbin/rabbitmq-server –detached
停止程序:
/usr/local/sbin/rabbitmqctl stop
rabbitmq-plugins.bat list查看已安裝的插件列表
rabbitmq-plugins.bat enable rabbitmq_management 命令開啟網(wǎng)頁版控制臺(tái)。
當(dāng)前文章:spring-rabbitMQ
標(biāo)題路徑:http://www.xueling.net.cn/article/chopih.html