成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

RabbitMQ是如何實(shí)現(xiàn)消息路由的?

開(kāi)發(fā) 前端
生產(chǎn)者把消息發(fā)送到 RabbitMQ Broker 上的Exchange 交換機(jī)上。Exchange 交換機(jī)把收到的消息根據(jù)路由規(guī)則發(fā)給綁定的隊(duì)列(Queue)。最后再把消息投遞給訂閱了這個(gè)隊(duì)列的消費(fèi)者,從而完成消息的異步通訊。

?1.工作流程

RabbitMQ 是一個(gè)基于 AMQP 協(xié)議實(shí)現(xiàn)的分布式消息中間件。AMQP 的具體工作機(jī)制是,

圖片

生產(chǎn)者把消息發(fā)送到 RabbitMQ Broker 上的Exchange 交換機(jī)上。Exchange 交換機(jī)把收到的消息根據(jù)路由規(guī)則發(fā)給綁定的隊(duì)列(Queue)。最后再把消息投遞給訂閱了這個(gè)隊(duì)列的消費(fèi)者,從而完成消息的異步通訊。

其中,Exchange交換機(jī),可以定義消息的路由規(guī)則,將消息路由到指定的隊(duì)列。然后 Queue隊(duì)列是消息的載體,每個(gè)消息可以根據(jù)路由規(guī)則路由到一個(gè)或者多個(gè)隊(duì)列中。

2.路由策略

完成RabbitMQ消息路由的核心組件是 Exchange。而消息的路由是由Exchange類(lèi)型 和 Binding 來(lái)決定的。Binding 表示建立 Queue 和 Exchange 之間的綁定關(guān)系,每一個(gè)綁定關(guān)系會(huì)存在一個(gè) BindingKey。

通過(guò)這種方式相當(dāng)于在 Exchange 中建立了一個(gè)路由關(guān)系表。生產(chǎn)者發(fā)送消息的時(shí)候,需要聲明一個(gè) RoutingKey(路由鍵),Exchange 拿到RoutingKey 之后,根據(jù) RoutingKey 和路由表里面的 BindingKey 進(jìn)行匹配,而匹配的規(guī)則是通過(guò) Exchange類(lèi)型來(lái)決定的。

在 RabbitMQ 中,默認(rèn)有四種類(lèi)型的 Exchange:Direct ,F(xiàn)anout、Topic和Header。

Direct,叫直連,也就是完整匹配方式,需要Routing Key 和 Binding Key 完全一致,相當(dāng)于點(diǎn)對(duì)點(diǎn)的發(fā)送。如圖所示:

圖片

如果發(fā)送routing key為”spring”的消息,那么只有第一個(gè)隊(duì)列能收到消息。

Topic:叫主題,這種方式是通過(guò)設(shè)置通配符來(lái)動(dòng)態(tài)匹配,相當(dāng)于正則。就是用Routing Key 去匹配Binging Key。BingingKey支持兩個(gè)通配符。

代表匹配0個(gè)或者多個(gè)單詞

* 代表匹配不多不少一個(gè)單詞

另外,BingingKey用點(diǎn)隔開(kāi)兩個(gè)單詞。

用*表示使用正則表達(dá)式進(jìn)行匹配,如圖所示:

圖片

有4個(gè)隊(duì)列綁定到Topic類(lèi)型的交換機(jī),而且使用不同的綁定鍵。

如果發(fā)送routing key為"junior.abc.jvm" 的消息,那么,只有第一個(gè)隊(duì)列能收到。

如果發(fā)送routing key為"senior.netty"的消息,那么,第二個(gè)隊(duì)列和第三個(gè)隊(duì)列能收到。

Fanout:叫廣播,這種方式不需要設(shè)置Routing Key,而是把消息廣播給綁定到當(dāng)前 Exchange 上的所有隊(duì)列上。如圖所示:

圖片

只要發(fā)送消息到Fanout Exchange上,那么三個(gè)隊(duì)列都能收到消息

RabbitMQ、Kafka、RocketMQ 是目前最主流的分布式消息中間件。有的同學(xué)可能對(duì) Kafka 比較了解,有的同學(xué)可能對(duì) RabbitMQ 比較了解。不過(guò),在面試的時(shí)候,面試官一般會(huì)問(wèn)你用過(guò)的技術(shù)組件。通過(guò)面試過(guò)程中推演出你的學(xué)習(xí)能力以及對(duì)技術(shù)的掌握能力,這個(gè)方面如果還不錯(cuò)的話,接觸一個(gè)新的 MQ 組件所消耗的學(xué)習(xí)成本會(huì)比較小。

責(zé)任編輯:武曉燕 來(lái)源: Tom彈架構(gòu)
相關(guān)推薦

2022-07-26 20:00:35

場(chǎng)景RabbitMQMQ

2020-09-27 07:44:08

RabbitMQ投遞消息

2020-10-14 08:36:10

RabbitMQ消息

2025-05-29 01:33:00

微服務(wù)架構(gòu)系統(tǒng)

2024-05-09 08:04:23

RabbitMQ消息可靠性

2024-12-18 07:43:49

2024-05-23 12:11:39

2023-09-05 15:48:14

RabbitMQ延遲隊(duì)列

2024-12-31 00:00:00

RabbitMQ插件代碼

2024-05-16 08:10:17

RabbitMQ軟件通信機(jī)制

2020-08-26 07:17:19

通信

2024-05-10 09:36:36

架構(gòu)消息隊(duì)列

2023-12-04 09:23:49

分布式消息

2021-09-07 10:38:37

RabbitMQ 高可用消費(fèi)

2025-03-12 07:55:46

2023-11-08 07:51:11

RabbitMQ接收消息

2019-02-25 15:44:16

開(kāi)源RabbitMQSpring Clou

2024-01-31 09:42:11

RabbitMQ消息隊(duì)列.NET

2024-11-05 15:02:41

2025-01-10 08:20:00

MQ消息架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久草视频观看 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 中文字幕一区二区三区四区五区 | 亚洲国产精久久久久久久 | 啪啪综合网 | 国产一区二区三区四区在线观看 | 亚洲欧美精品 | 欧美影院 | 久久久久久久久久久久91 | 91精品国产一区二区三区 | 欧美成人影院 | 欧美亚洲免费 | 日韩一级电影免费观看 | 综合精品久久久 | 日韩欧美三级 | 亚洲狠狠 | 国产精品日韩欧美一区二区三区 | 天堂一区在线 | 免费在线成人网 | 久久亚洲一区 | 国产伦精品一区二区三区视频金莲 | 成人av网站在线观看 | 国产一级一级毛片 | 亚洲九九色 | 欧美xxxx在线 | 午夜爱爱网 | 欧美在线成人影院 | 羞羞视频在线免费 | 日韩视频中文字幕 | 精品福利在线 | 草久在线 | 一区二区三区视频 | 91激情电影 | 在线视频国产一区 | 国产精品波多野结衣 | 99精品视频在线观看 | 亚洲经典一区 | 99久久精品免费看国产免费软件 | 国产精品一区二区无线 | 久久久这里都是精品 | 欧美日韩在线不卡 |