訊息列隊不做過多解釋了,直接講講rabbitmq的基本概念和路由模式。
一、安裝及基本概念
connectionfactory、connection、channel不做過多介紹,基本步驟為
1.初始化連線工廠
2.從連線工廠獲取連線
3.在連線中開啟乙個通道
4.在通道中宣告交換機
5.在通道中宣告乙個列隊(或多個)
6.繫結列隊到交換機
7.進行相關操作
二、工作模式(路由模式)
生產者--消費者模式基本的模式是生產者生成訊息,投入到列隊中,需要的消費者(訂閱)去列隊拿訊息進行處理。
rabbitmq在這裡進行了乙個中間處理,訊息投遞給哪個列隊由路由器或者稱交換機(exchange)來處理,即生產者不直接將訊息投遞到列隊中,而是投遞到交換機,具體要投遞到哪個列隊,由交換機根據路由規則來確定。
類似於寄信,寄送人不直接將信件投遞到派件員手中,而是投遞到郵局,郵局根據信件的位址來決定到送到哪位派件員手上,進而送達收件人。這也是rabbitmq的乙個特點和強大之處。
所以,rabbitmq的工作模式就是producer將訊息投遞到特定的exchange,queue按routing
key訂閱訊息(例如,列隊a訂閱了交換機e的路由鍵為test的訊息,那麼乙個生產者投遞兩個訊息到e中兩個訊息,routing
key分別為test和test2,那麼a列隊的只能收到路由鍵為test的訊息),符合路由鍵的訊息將被分發到具體的列隊中。
交換機常用的路由方式有四種,fanout、direct、topic、header。header用的較少,自己也沒用過,不做介紹了。
1.fanout是簡單地將訊息分發給所有列隊,如圖
列隊1和列隊2均能拿到兩個訊息(message、message2)
2.direct是根據路由鍵直接分發,如圖:
如存在交換機e,列隊1和列隊2繫結到交換機的routing key分別為boys和girls。現在乙個生產者分別按照routing
key為boys和girls投遞了訊息message和message2,那麼列隊1中會得到message,列隊2或得到message2。
3.topic可以說是是direct的擴充套件,引入了匹配模式,路由規則如下
生產者投遞上述三個訊息,則列隊1拿到message和message3,列隊2拿到message2和message3,列隊3三個訊息均能拿到。
三、例項
下面是本人在github上面rabbitmq的demo:
入門級例項
與springmvc整合
**訊息列隊不做過多解釋了,直接講講rabbitmq的基本概念和路由模式。
一、安裝及基本概念
connectionfactory、connection、channel不做過多介紹,基本步驟為
1.初始化連線工廠
2.從連線工廠獲取連線
3.在連線中開啟乙個通道
4.在通道中宣告交換機
5.在通道中宣告乙個列隊(或多個)
6.繫結列隊到交換機
7.進行相關操作
二、工作模式(路由模式)
生產者--消費者模式基本的模式是生產者生成訊息,投入到列隊中,需要的消費者(訂閱)去列隊拿訊息進行處理。
rabbitmq在這裡進行了乙個中間處理,訊息投遞給哪個列隊由路由器或者稱交換機(exchange)來處理,即生產者不直接將訊息投遞到列隊中,而是投遞到交換機,具體要投遞到哪個列隊,由交換機根據路由規則來確定。
類似於寄信,寄送人不直接將信件投遞到派件員手中,而是投遞到郵局,郵局根據信件的位址來決定到送到哪位派件員手上,進而送達收件人。這也是rabbitmq的乙個特點和強大之處。
所以,rabbitmq的工作模式就是producer將訊息投遞到特定的exchange,queue按routing
key訂閱訊息(例如,列隊a訂閱了交換機e的路由鍵為test的訊息,那麼乙個生產者投遞兩個訊息到e中兩個訊息,routing
key分別為test和test2,那麼a列隊的只能收到路由鍵為test的訊息),符合路由鍵的訊息將被分發到具體的列隊中。
交換機常用的路由方式有四種,fanout、direct、topic、header。header用的較少,自己也沒用過,不做介紹了。
1.fanout是簡單地將訊息分發給所有列隊,如圖
列隊1和列隊2均能拿到兩個訊息(message、message2)
2.direct是根據路由鍵直接分發,如圖:
如存在交換機e,列隊1和列隊2繫結到交換機的routing key分別為boys和girls。現在乙個生產者分別按照routing
key為boys和girls投遞了訊息message和message2,那麼列隊1中會得到message,列隊2或得到message2。
3.topic可以說是是direct的擴充套件,引入了匹配模式,路由規則如下
生產者投遞上述三個訊息,則列隊1拿到message和message3,列隊2拿到message2和message3,列隊3三個訊息均能拿到。
三、例項
下面是本人在github上面rabbitmq的demo:
入門級例項
與springmvc整合
**
RabbitMQ使用場景介紹
場景說明 使用者註冊後,需要傳送郵件和註冊簡訊,傳統的方式有兩種 1 序列的方式,2 並行的方式 場景 雙十一是購物狂節,使用者下單後,訂單系統要通知庫存系統,傳統的做法就是訂單系統呼叫庫存系統的介面 這種做法有乙個缺點 當庫存系統出現故障之後,訂單系統就會失敗,訂單系統和庫存系統耦合,引入訊息佇列...
python使用rabbitmq例項三,交換機
上面一篇是說到了工作佇列,每次訊息都只會傳送給其中乙個接收端,如果需要將訊息廣播出去,讓每個接收端都能收到,那麼就要使用交換機。交換機的工作原理 訊息傳送端先將訊息傳送給交換機,交換機再將訊息傳送到繫結的訊息佇列,而後每個接收端都能從各自的訊息佇列裡接收到資訊。rabbitmq交換機工作原理 下面用...
python使用rabbitmq例項四,路由鍵
第三篇說明了關於交換機的使用,已經能實現給所有接收端傳送訊息,但是如果需要自由定製,有的訊息發給其中一些接收端,有些訊息傳送給另外一些接收端,要怎麼辦呢?這種情況下就要用到路由鍵了。路由鍵的工作原理 每個接收端的訊息佇列在繫結交換機的時候,可以設定相應的路由鍵。傳送端通過交換機傳送資訊時,可以指明路...