第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

1. 前言

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

2. RabbitMQ 工作模式

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

題目解析

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

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

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

2.1 簡單隊(duì)列

圖片描述

?

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

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

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

2.2 工作隊(duì)列

圖片描述
?

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

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

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

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

圖片描述
?

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

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

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

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

2.4 路由隊(duì)列

圖片描述
?

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

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

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

2.5 主題隊(duì)列

圖片描述
?

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

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

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

3. 小結(jié)

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