.NET 云原生架構(gòu)師訓(xùn)練營(yíng)(模塊二 基礎(chǔ)鞏固 消息隊(duì)列 介紹與基礎(chǔ))--學(xué)習(xí)筆記
2.6.1 消息隊(duì)列 -- 介紹
主要使用場(chǎng)景
隊(duì)列的三種形式
消息隊(duì)列的優(yōu)點(diǎn)
主要使用場(chǎng)景
典型的異步處理
流量削鋒
應(yīng)用解耦
隊(duì)列的三種形式
點(diǎn)對(duì)點(diǎn)
工作隊(duì)列
發(fā)布與訂閱
消息隊(duì)列的優(yōu)點(diǎn)
1、屏蔽異構(gòu)平臺(tái)的細(xì)節(jié):發(fā)送方、接收方系統(tǒng)之間不需要了解雙方,只需認(rèn)識(shí)消息。
2、異步:消息堆積能力;發(fā)送方接收方不需同時(shí)在線,發(fā)送方接收方不需同時(shí)擴(kuò)容(削峰)。
3、解耦:防止引入過(guò)多的API給系統(tǒng)的穩(wěn)定性帶來(lái)風(fēng)險(xiǎn);調(diào)用方使用不當(dāng)會(huì)給被調(diào)用方系統(tǒng)造成壓力,被調(diào)用方處理不當(dāng)會(huì)降低調(diào)用方系統(tǒng)的響應(yīng)能力。
4、復(fù)用:一次發(fā)送多次消費(fèi)。
5、可靠:一次保證消息的傳遞。如果發(fā)送消息時(shí)接收者不可用,消息隊(duì)列會(huì)保留消息,直到成功地傳遞它。
6、提供路由:發(fā)送者無(wú)需與接收者建立連接,雙方通過(guò)消息隊(duì)列保證消息能夠從發(fā)送者路由到接收者,甚至對(duì)于本來(lái)網(wǎng)絡(luò)不易互通的兩個(gè)服務(wù),也可以提供消息路由。
2.6.2 RabbitMQ -- 基礎(chǔ)
主要場(chǎng)景
AMQP
主要場(chǎng)景
軟件系統(tǒng)中使用消息隊(duì)列的主要場(chǎng)景:
秒殺活動(dòng)、搶購(gòu)、消息通訊、郵件發(fā)送、電話短信等都是典型的采用消息中間件的業(yè)務(wù)場(chǎng)景。

AMQP
AMQP 0-9-1 Model Explained:https://www.rabbitmq.com/tutorials/amqp-concepts.html

交換機(jī)
隊(duì)列
綁定
信道(Channel)
消息
交換機(jī)
交換機(jī)的四種類型
Direct 直連
Fanout 發(fā)布訂閱-廣播
Topic 發(fā)布訂閱-路由
Headers
Direct 直連

Fanout 發(fā)布訂閱-廣播

Topic 發(fā)布訂閱-路由
Topics:https://www.rabbitmq.com/tutorials/tutorial-five-python.html


Headers
特性中可以做路由的匹配
隊(duì)列
它們存儲(chǔ)由應(yīng)用程序使用的消息。
隊(duì)列與交換共享一些屬性,但也具有一些其他屬性:
名稱
持久(隊(duì)列將在代理重新啟動(dòng)后幸存)
獨(dú)占(僅由一個(gè)連接使用,并且該連接關(guān)閉時(shí)隊(duì)列將被刪除)
自動(dòng)刪除(至少有一個(gè)使用方的隊(duì)列在最后一個(gè)使用方退訂時(shí)被刪除)
參數(shù)(可選;由插件和特定于代理的功能使用,例如消息TTL,隊(duì)列長(zhǎng)度限制等)
必須先聲明隊(duì)列,然后才能使用隊(duì)列。聲明隊(duì)列將導(dǎo)致它創(chuàng)建(如果尚不存在)。如果隊(duì)列已經(jīng)存在并且其屬性與聲明中的相同,則該聲明無(wú)效。
如果有至少一個(gè)消費(fèi)者訂閱了隊(duì)列,當(dāng)消息到達(dá)隊(duì)列時(shí),消息會(huì)發(fā)送給訂閱者。如果一個(gè)訂閱者都沒(méi)有,消息會(huì)在隊(duì)列中等待,直到出現(xiàn)第一個(gè)訂閱者
綁定
綁定是交換使用(其中包括)將消息路由到隊(duì)列的規(guī)則。
為了指示交換機(jī)E將消息路由到隊(duì)列Q,必須將Q綁定到E。綁定可能具有某些交換機(jī)類型使用的可選 路由鍵屬性。
路由密鑰的目的是選擇發(fā)布到交換機(jī)的某些消息以路由到綁定隊(duì)列。換句話說(shuō),路由鍵就像一個(gè)過(guò)濾器。
信道(Channel)
AMQP 引進(jìn)的一個(gè)特殊的概念,建立在 tcp 之上的一個(gè)引用層協(xié)議
一個(gè)客戶端與一個(gè)服務(wù)器建立一個(gè)連接,可以用于多個(gè)消費(fèi)者
一個(gè) tcp 連接里面可以產(chǎn)生多個(gè)信道

消息
消息確認(rèn)
拒絕消息
預(yù)讀消息 prefetching
消息格式
消息確認(rèn)
什么時(shí)候從隊(duì)列中移除
默認(rèn)模式(不需要 ack,發(fā)送到消費(fèi)者之后即從隊(duì)列中移除)
ack 模式(需要消息者回復(fù))
消息格式
Content type
Content encoding
Routing key
Delivery mode (persistent or not)
Message priority
Message publishing timestamp
Expiration period
Publisher application id
課程鏈接
.NET云原生架構(gòu)師訓(xùn)練營(yíng)講什么,怎么講,講多久
