rabbitmq學習之:(一)初識、概念及心得

首先,裝好RMQ,且激活了Web管理服務以後(須要先暫停服務,而後重啓,看帖子),就能夠經過http://localhost:15672來訪問了(用戶名/密碼是:guest/guest,這個雖然叫guest可是確實超級管理員權限)。服務器


這個網頁其實頗有意思,到目前爲止,我以爲很是有用的內容是,他裏面能夠看到你聲明的Queue,Exchange,RoutingKey(這個要點擊某個Exchange才能看到)。看到這些有什麼用呢?最重要的一點就是,他們是真實存在的!並且存在於RMQ服務器上!不存在於Producer,也不存在於Consumer。換句話說,他們不會隨着你的程序的消亡而消亡!(固然你程序讓他們死,他們固然會死,我指的是通常狀況。)好,在展開一下,假如你的程序裏面聲明瞭一個不會自動消亡的Queue和一個Exchange,那麼第一次運行,這2個對象就被建立出來了,那麼他們就永遠存在,第二次運行,你就沒必要再聲明瞭。這就是爲何,RabbitMQ.Client裏面某些參數都是字符串,而不是通常類庫的對象實例。spa


那個做者其實沒有明確交代清楚幾個基本的概念:orm

  1. Consumer是直接從Queue裏面取消息的,不用通過Exchange。這點要牢記,並且從全部取消息的API,只接受Queue的名字,就能夠印證。對象

  2. Producer要發送消息,是不能直接往Queue裏面發的,必須通過Exchange,並且發消息必定要指定RoutingKey。這個也能夠從發消息的API獲得印證。字符串

  3. Exchange和Queue(能夠一對多)彼此是經過RoutingKey這條「紐帶」來綁定的!Exchange、RoutingKey、Queue這三者關係緊密。這個也要牢記!發消息的時候,須要指定的是Exchange和RoutingKey,沒法指定Queue。這個很Make Sense吧!有點像MVC的關係(Producer是Model,將消息(with RoutingKey)傳給Exchange,Exchange是Controller來派發消息到指定的Queue(s))。it

  4. Exchange有4種類型:Direct、Fanout、Topic、Headers。這個看後面4張圖就基本能夠了解。io

  5. RMQ提供了一個默認的Exchange,名字是空字符串。他是Direct類型的,綁定到全部的Queue(並且每個Queue和這個無名Exchange之間的RoutingKey是Queue的名字)。那個做者是這樣說的:每當你聲明瞭一個Queue,就會有一個默認的Exchange。我也不知道他說的對不對,反正就有那麼一個默認的Exchange就對了。這個不用你顯式聲明(就存在)就對了。權限


這裏貼一下PEQC關係圖:程序

這裏貼一下Exchange4種類型:Direct、Fanout、Topic、Headers。密碼

做者心得:

1. 在建立ConnectFactory時,咱們能夠傳入主機名、端口號、用戶名/密碼、虛擬Host等參數。

2. 也可使用ampq://用戶名:密碼@主機名:端口號/%2f

3. Channel是輕量級的TCP/IP鏈接, 而Connection是很是Expensive的。

4. 消息不是直接發到Queue的,而是Producer經過Exchange來發送的。

5. 每當聲明一個Queue時,會自動綁定到默認的Exchange上。並且不能解綁、不能刪除、不能顯式聲明,只能用來發消息。

相關文章
相關標籤/搜索