RabbitMQ使用介紹及實例
消息列隊不做過多解釋了,直接講講rabbitmq的基本概念和路由模式。
一、安裝及基本概念
rabbitmq是基於erlang編寫的,所以安裝rabbitmq之前需要安裝erlang的環境,配置環境變量,百度即可。
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:
入門級實例 https://github.com/littlechaser/rabbitmq.git
與springMVC整合 https://github.com/littlechaser/SpringRabbitMQ.git
與springMVC整合的項目發送消息調接口可使用火狐瀏覽器插件RestClient、谷歌瀏覽器插件postman等。(postman需要FQ下載)
轉自https://www.cnblogs.com/xiao-tao/p/6889745.html
RabbitMQ使用介紹及實例