RabbitMQ訊息佇列中的幾種典型問題再探

2021-07-10 22:13:50 字數 2865 閱讀 2065

剛剛接觸rabbitmq的時候,可能會被撲面而來的一堆概念搞的有些糊塗,又是 exchange(交換器)、又是queue(佇列)、又是routing_key(路由);還有什麼 connection(連線)、channel(管道)。而且各個官網的例子當中,有些概念會出現、有些又不會出現,也沒有特別的講清楚,所以我們還是要先把概念和流程搞搞清楚。

1、基礎概念
既然我們用rabbitmq來處理訊息,那麼我們就要清楚這個訊息到底是什麼。

(例1):從實體的角度,我們可以把訊息(message)看成是個貨物:我們從某寶、某東上買的貨物,這個貨物由廠家生產出來、通過賣家、快遞送給我們,其中:貨物就是「訊息」,廠家就是生產者(publisher)、買家就是消費者(consumer)、某寶等平台就是交換器(exchange)、物流快遞就是佇列(queue)。

(例2):從虛擬的角度,我們也可以把訊息 看成是個訂單,這個時候,我們就是訂單(message)的生產者、而商家就成了訂單的消費者,而這個時候的佇列就不是快遞而是執行在電商平台(exchange)上的資訊流了。

2、訊息的生命週期
把大象放進冰箱要幾步?

答:3步,第一步把冰箱門開啟,第二步把大象放進去,第三步把冰箱門關上。

那麼我們要在電商平台上下乙個訂單需要哪幾步?

第一步:開啟電腦

第二步:開啟瀏覽器

第三步:開啟某東**

第四步:選定商品

第五步:選擇付款方式(某東支付 or 白條支付 or 某信支付)

第六步:確認付款

第七步:關閉瀏覽器

第八步:關閉電腦

我們把消費的過程和訊息佇列的生命週期對應一下,會發現有一定相似性

第一步:開啟電腦 (連線到指定的rabbitmq伺服器 ,建立connection)

第二步:開啟瀏覽器 (獲取通道、即open channel)

第三步:開啟某東** (宣告交換器、即exchange_declare)

第四步:選定商品 (宣告佇列、即 queue_declare)

第五步:選擇付款方式 (把佇列和交換器繫結起來、即 queue_bind)

第六步:確認付款 (消費資訊、即 basic_consume )

第七步:關閉瀏覽器 (關閉通道、即 close channel)

第八步:關閉電腦 (關閉連線、即 close connection)

markdown extra**語法:

專案**

computer

$1600

phone

$12pipe$1

可以使用冒號來定義對齊方式:

專案**

數量computer

1600 元

5phone

12 元

12pipe

1 元234

markdown extra定義列表語法:

專案1

專案2定義 a

定義 b

專案3定義 c

定義 d

定義d內容

**塊語法遵循標準markdown**,例如:

@requires_authorization

defsomefunc

(param1='', param2=0):

'''a docstring'''

if param1 > param2: # interesting

print

'greater'

return (param2 - param1 + 1) or

none

class

someclass:

pass

>>> message = '''interpreter

... prompt'''

生成乙個腳注1.

[toc]來生成目錄:

**定義列表

**塊腳注

目錄數學公式

uml 圖

離線寫部落格

瀏覽器相容

使用mathjax渲染latex 數學公式,詳見math.stackexchange.com. x

=−b±

b2−4

ac‾‾

‾‾‾‾

‾‾‾√

2a更多latex語法請參考 這兒.

可以渲染序列圖:

或者流程圖:

即使使用者在沒有網路的情況下,也可以通過本編輯器離線寫部落格(直接在曾經使用過的瀏覽器中輸入write.blog.csdn.net/mdeditor即可。markdown編輯器使用瀏覽器離線儲存將內容儲存在本地。

使用者寫部落格的過程中,內容實時儲存在瀏覽器快取中,在使用者關閉瀏覽器或者其它異常情況下,內容不會丟失。使用者再次開啟瀏覽器時,會顯示上次使用者正在編輯的沒有發表的內容。

部落格發表後,本地快取將被刪除。 

使用者可以選擇 把正在寫的部落格儲存到伺服器草稿箱,即使換瀏覽器或者清除快取,內容也不會丟失。

注意:雖然瀏覽器儲存大部分時候都比較可靠,但為了您的資料安全,在聯網後,請務必及時發表或者儲存到伺服器草稿箱

ie9以下不支援

ie9,10,11存在以下問題

不支援離線功能

ie9不支援檔案匯入匯出

ie10不支援拖拽檔案匯入

這裡是腳注的 內容. ↩

訊息佇列Rabbitmq

rabbitmq server rabbitmqctl reset rabbitmqctl stop rabbitmqctl stop rabbitmqctl list users rabbitmqctl list queues rabbitmqctl add user user name user...

訊息佇列RabbitMQ

這是乙個很嚴肅的問題。系統之間解除耦合,可以讓不同語言編寫的系統通訊互動 保證伺服器負載不會飆公升。高大上一點就是流量削峰。讓程式變成非同步,提高響應速度。把費時任務放到另乙個程序或執行緒去執行。redis實現 剛開始學習redis時,一看這個鍊錶不就是給佇列準備的嗎?所以,一心扎進去,要寫個佇列出...

RabbitMQ訊息佇列

訊息發布接收流程 接收訊息 工作模式 publish subscribe 發布訂閱模式 發布訂閱publish subscribe和工作模式work queues的區別 routing 路由模式 區別 topics 區別 header 宣告佇列 bean queue inform sms publi...