日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ学习之:(一)初识、概念及心得

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ学习之:(一)初识、概念及心得 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

因為網上有一篇很好的RMQ的入門帖子http://lostechies.com/derekgreer/tag/rabbitmq/,所以我就不多說了,就說說我目前看了該作者1~5章后,自己的心得。(所以要看懂我寫的內容,需要看完那個作者寫的1~5章。你可以先跳過這一篇,因為我后面的博文會依次分析該作者的文章的,等分析完1~5章,就可以回過頭來看我寫的這篇了)

?

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

?

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

?

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

? 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))。

? 4. Exchange有4種類型:Direct、Fanout、Topic、Headers。這個看后面4張圖就基本可以了解。

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

?

這里貼一下PEQC關系圖:

?

?

?

?

這里貼一下Exchange4種類型:Direct、Fanout、Topic、Headers。

?

?

轉載于:https://my.oschina.net/u/3346994/blog/869500

總結

以上是生活随笔為你收集整理的RabbitMQ学习之:(一)初识、概念及心得的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。