最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

1. 前言

因?yàn)樯a(chǎn)環(huán)境存在不同的消息分發(fā)要求,例如對(duì)于注冊(cè)流程,同一條注冊(cè)消息需要發(fā)送到短信模塊和郵箱模塊,而對(duì)于請(qǐng)求削峰場(chǎng)景,同一條消息只需要發(fā)送到業(yè)務(wù)服務(wù)后端即可。我們可以通過(guò)配置 RabbitMQ 工作模式來(lái)決定發(fā)送單個(gè)隊(duì)列還是多個(gè)隊(duì)列,以及配置特定的路由規(guī)則。

2. RabbitMQ 工作模式

面試官提問(wèn):RabbitMQ 有哪些發(fā)布訂閱模式?有什么區(qū)別?

題目解析

這里主要考察候選人對(duì)消息隊(duì)列不同發(fā)布/訂閱架構(gòu)模型的了解程度,我們首先給出RabbitMQ隊(duì)列模型中不同模塊的定義:

  • 生產(chǎn)者(Producer):發(fā)送消息到隊(duì)列的模塊;
  • 隊(duì)列(Queue):存儲(chǔ)消息的一段空間,作為消息的緩存模塊;
  • 消費(fèi)者(Consumer):從隊(duì)列中接受消息的模塊;
  • 交換機(jī)(Exchange):消息不直接發(fā)到隊(duì)列,首先發(fā)到 Exchange 模塊,再根據(jù)路由規(guī)則轉(zhuǎn)發(fā)到定制化的隊(duì)列。

其次,候選人需要畫出五種工作模式的圖示,并且說(shuō)明對(duì)應(yīng)特點(diǎn)。

2.1 簡(jiǎn)單隊(duì)列

圖片描述

?

(簡(jiǎn)單隊(duì)列模型圖,引用自官方文檔)

簡(jiǎn)單隊(duì)列模型的定義:只有一個(gè)生產(chǎn)者、一個(gè)消息隊(duì)列、一個(gè)消費(fèi)者。

優(yōu)點(diǎn)是不需要配置復(fù)雜的路由規(guī)則,缺點(diǎn)是只支持點(diǎn)對(duì)點(diǎn)通信,不適合大部分需要分發(fā)消息的路由場(chǎng)景。

2.2 工作隊(duì)列

圖片描述
?

(工作隊(duì)列模型圖,引用自官方文檔)

工作隊(duì)列(Work Queue)模型的定義:一個(gè)生產(chǎn)者,擁有往多個(gè)消費(fèi)者發(fā)送消息的能力,但是一條消息只能被一個(gè)消費(fèi)者消費(fèi)。

工作隊(duì)列的應(yīng)用場(chǎng)景是需要將流量打散到多個(gè)消費(fèi)者模塊的場(chǎng)景,例如電商秒殺的前置削峰消息隊(duì)列。

2.3 發(fā)布/訂閱隊(duì)列

圖片描述
?

(發(fā)布/訂閱消息模型圖,引用自官方文檔)

發(fā)布/訂閱(Publish/Subscribe)隊(duì)列模型的定義:生產(chǎn)者只能往交換機(jī)(Exchange)模塊發(fā)送消息,交換機(jī)綁定了多個(gè)隊(duì)列,所有綁定該交換機(jī)的隊(duì)列都會(huì)收到交換機(jī)中的所有消息。

交換機(jī)存在四種路由方式:direct、topic、headers和fanout模式。

發(fā)布/訂閱模型是比較常用的隊(duì)列模型,例如注冊(cè)流程中,同一個(gè)用戶請(qǐng)求需要往短信模塊和郵箱模塊發(fā)送消息,可以使用該模型。

2.4 路由隊(duì)列

圖片描述
?

(路由隊(duì)列模型圖,引用自官方文檔)

路由(Routing)隊(duì)列模型的定義:生產(chǎn)者將消息發(fā)送到 direct 模式的交換機(jī),交換機(jī)和隊(duì)列綁定的時(shí)候限制了路由 Key。當(dāng)生產(chǎn)者發(fā)送一條消息的時(shí)候,會(huì)指定一條路由 Key,這條消息只會(huì)發(fā)送到對(duì)應(yīng)的隊(duì)列中。例如上圖中指定key=orange的消息,只有 Q1 能收聽到該條消息;指定key=black或者key=green的消息,只有 Q2 隊(duì)列能收到到該消息。

路由隊(duì)列的優(yōu)勢(shì)是能夠定制化發(fā)送消息,消費(fèi)者選擇性收聽消息,適合靈活變通的應(yīng)用場(chǎng)景。

2.5 主題隊(duì)列

圖片描述
?

(主題隊(duì)列模型圖,引用自官方文檔)

主題(Topics)隊(duì)列模型的定義:實(shí)際上是基于路由隊(duì)列的定制化配置,支持了key的通配符匹配,簡(jiǎn)單理解就是正則表達(dá)式+路由key。例如對(duì)于上圖,*.orange只能匹配到a.orange類似的key,但是lazy.#可以匹配到lazy.a或者lazy.a.b類似的key。

因?yàn)槎x基本相同,主題隊(duì)列的應(yīng)用場(chǎng)景類似路由隊(duì)列。

3. 小結(jié)

本章節(jié)介紹了 RabbitMQ 的生產(chǎn)者、隊(duì)列、消費(fèi)者、交換機(jī)基本組件,以及五種工作隊(duì)列模型,需要候選人能夠畫出每種隊(duì)列的結(jié)構(gòu)示意圖,并且能夠清晰闡述不同隊(duì)列的使用特點(diǎn)以及能夠適用的實(shí)戰(zhàn)場(chǎng)景。