RabbitMQ:api
安裝:瀏覽器
1.安裝erlang開發環境。服務器
2.安裝RabbitMQ,安裝RabbitMQ插件,這樣能夠在瀏覽器操做Rabbit MQ;tcp
步驟:插件
rabbitMQ消息隊列做爲服務器,生茶者和消費者是客戶端。blog
生產者步驟:rabbitmq
ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); factory.setPort(5672); factory.setUsername("guest"); factory.setPassword("guest"); factory.setVirtualHost("/");//rabbitmq默認虛擬機名稱爲「/」,虛擬機至關於一個獨立的mq服務隊列
1.經過建立一個鏈接工廠來來鏈接主機、端口號、用戶名、密碼。路由
2.經過這個工廠生成一個tcp鏈接,經過該鏈接建立通道。開發
3.經過通道定義一個隊列
/** * 聲明隊列,若是Rabbit中沒有此隊列將自動建立 * param1:隊列名稱 * param2:是否持久化 * param3:隊列是否獨佔此鏈接 * param4:隊列再也不使用時是否自動刪除此隊列 * param5:隊列參數 */ channel.queueDeclare(QUEUE, true, false, false, null);
4.定義一個字符串消息
5.經過通道調用api,發佈該消息。
消費者步驟:
1.建立工廠。建立鏈接,建立通道,聲明隊列。
2.經過通道調用api,肯定監聽哪一個隊列,監聽成功,而後調用哪一個方法。channel.basicConsume(QUEUE, true, consumer);
3.方法定義,經過這個方法就能夠得到消息內容 DefaultConsumer consumer = new DefaultConsumer(channel) { }這個是匿名內部類,裏邊要實現一個handleDelivery方法,這個方法會被自動調用,能夠在這個方法內處理消息。
一、發送端操做流程
1)建立鏈接
2)建立通道
3)聲明隊列
4)發送消息 二、接收端
1)建立鏈接
2)建立通道
3)聲明隊列
4)監聽隊列
5)接收消息
RabbitMQ消息隊列使用流程文字化敘述:首先生產者即客戶端,要建立鏈接,而後建立通道,經過通道建立交換機(聲明交換機類型)和隊列,而後綁定某個交換機和某個隊列,而且指定路由key,這樣發送消息給交換機時候,會指定路由key,而後交換機根據與本身綁定的隊列看看有沒有路由key相符合的,發送給它,發送wan之後,消費者監聽到之後,就會調用相應的消費方法。
RabbitMQ工做模式:對於 任務太重或任務較多狀況使用工做隊列能夠提升任務處理的速度。
1. 工做隊列:使用默認的交換機(全部的隊列都會和默認交換機鏈接,路由key是隊列名字),發送消息時,路由key是隊列的名字。
有兩個或兩個以上消費者監聽同一個隊列,而後輪流從隊列取出消息。
一個交換機,一個隊列,多個消費者。
2.發佈訂閱模式:適合那種註冊成功,短信郵箱一塊兒通知。
定義交換機,要選擇交換機類型爲發佈訂閱類型,綁定交換機和消息隊列,不指定路由key,交換機會把消息發送給每個消息隊列。
3.路由模式:
定義新的交換機,要選擇交換機類型爲路由類型,須要綁定交換機和消息隊列,綁定時須要指定消息隊列在這個交換機中的路由key,而後向這個交換機發布消息時
指定路由key,就會將消息發送給指定的消息隊列。
4.通配符模式:有這樣一個案例,根據用戶的設置,來決定用戶接受短信、郵件、仍是都接受,若是使用路由模式,那麼一條消息根據路由key,只能匹配上短信或者郵件,不能兩個都匹配,而使用通配符模式,就能夠實現二者都匹配或者只匹配一個。
和路由模式同樣,只是路由key設置的是帶通配符的,這樣就能夠模糊匹配了。
5.Header模式:
header模式與routing不一樣的地方在於,header模式取消routingkey,使用header中的 key/value(鍵值對)匹配 隊列。
案例:
根據用戶的通知設置去通知用戶,設置接收Email的用戶只接收Email,設置接收sms的用戶只接收sms,設置兩種 通知類型都接收的則兩種通知都有效。
6.RPC模式