消息列隊不作過多解釋了,直接講講rabbitmq的基本概念和路由模式。html
1、安裝及基本概念git
rabbitmq是基於erlang編寫的,因此安裝rabbitmq以前須要安裝erlang的環境,配置環境變量,百度便可。github
connectionFactory、connection、channel不作過多介紹,基本步驟爲spring
1.初始化鏈接工廠
2.從鏈接工廠獲取鏈接
3.在鏈接中打開一個通道
4.在通道中聲明交換機
5.在通道中聲明一個列隊(或多個)
6.綁定列隊到交換機
7.進行相關操做瀏覽器
2、工做模式(路由模式)post
生產者--消費者模式基本的模式是生產者生成消息,投入到列隊中,須要的消費者(訂閱)去列隊拿消息進行處理。插件
rabbitmq在這裏進行了一箇中間處理,消息投遞給哪一個列隊由路由器或者稱交換機(Exchange)來處理,即生產者不直接將消息投遞到列隊中,而是投遞到交換機,具體要投遞到哪一個列隊,由交換機根據路由規則來肯定。htm
相似於寄信,寄送人不直接將信件投遞到派件員手中,而是投遞到郵局,郵局根據信件的地址來決定到送到哪位派件員手上,進而送達收件人。這也是rabbitmq的一個特色和強大之處。blog
因此,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三個消息均能拿到。
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