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

RabbitMQ:RabbitMQ架構(gòu)和工作流程

開源
RabbitMQ,俗稱“兔子MQ”(可見其輕巧,敏捷),是目前非常熱門的一款開源消息中間件,不管 是互聯(lián)網(wǎng)行業(yè)還是傳統(tǒng)行業(yè)都廣泛使用(最早是為了解決電信行業(yè)系統(tǒng)之間的可靠通信而設(shè)計(jì))。

一、介紹

RabbitMQ,俗稱“兔子MQ”(可見其輕巧,敏捷),是目前非常熱門的一款開源消息中間件,不管 是互聯(lián)網(wǎng)行業(yè)還是傳統(tǒng)行業(yè)都廣泛使用(最早是為了解決電信行業(yè)系統(tǒng)之間的可靠通信而設(shè)計(jì))。

1. 高可靠性、易擴(kuò)展、高可用、功能豐富等

2. 支持大多數(shù)(甚至冷門)的編程語言客戶端。

3. RabbitMQ遵循AMQP協(xié)議,自身采用Erlang(一種由愛立信開發(fā)的通用面向并發(fā)編程的語 言)編寫。

4. RabbitMQ也支持MQTT等其他協(xié)議。

RabbitMQ具有很強(qiáng)大的插件擴(kuò)展能力,官方和社區(qū)提供了非常豐富的插件可供選擇:

https://www.rabbitmq.com/community-plugins.html

二、整體邏輯架構(gòu)

1、RabbitMQ Exchange類型

RabbitMQ常用的交換器類型有: fanout 、 direct 、 topic 、 headers 四種。

Fanout

fanout會把所有發(fā)送到該交換器的消息路由到所有與該交換器綁定的隊(duì)列中,如圖:

Direct

direct類型的交換器路由規(guī)則很簡單,它會把消息路由到那些BindingKey和RoutingKey完全匹配的 隊(duì)列中,如下圖:

Topic

topic類型的交換器在direct匹配規(guī)則上進(jìn)行了擴(kuò)展,也是將消息路由到BindingKey和RoutingKey 相匹配的隊(duì)列中,這里的匹配規(guī)則稍微不同,它約定: BindingKey和RoutingKey一樣都是由"."分隔的字符串;BindingKey中可以存在兩種特殊字符“*”和 “#”,用于模糊匹配,其中"*"用于匹配一個單詞,"#"用于匹配多個單詞(可以是0個)。

Headers

headers類型的交換器不依賴于路由鍵的匹配規(guī)則來路由信息,而是根據(jù)發(fā)送的消息內(nèi)容中的 headers屬性進(jìn)行匹配。在綁定隊(duì)列和交換器時指定一組鍵值對,當(dāng)發(fā)送的消息到交換器時, RabbitMQ會獲取到該消息的headers,對比其中的鍵值對是否完全匹配隊(duì)列和交換器綁定時指定的鍵 值對,如果匹配,消息就會路由到該隊(duì)列。headers類型的交換器性能很差,不實(shí)用。

2、RabbitMQ數(shù)據(jù)存儲

RabbitMQ消息有兩種類型: 1. 持久化消息和非持久化消息。 2. 這兩種消息都會被寫入磁盤。

持久化消息在到達(dá)隊(duì)列時寫入磁盤,同時會內(nèi)存中保存一份備份,當(dāng)內(nèi)存吃緊時,消息從內(nèi)存中清 除。這會提高一定的性能。

非持久化消息一般只存于內(nèi)存中,當(dāng)內(nèi)存壓力大時數(shù)據(jù)刷盤處理,以節(jié)省內(nèi)存空間。

RabbitMQ存儲層包含兩個部分:隊(duì)列索引和消息存儲。

三、工作流程

1、生產(chǎn)者發(fā)送消息的流程

1)生產(chǎn)者連接RabbitMQ,建立TCP連接( Connection),開啟信道(Channel)

2)生產(chǎn)者聲明一個Exchange(交換器),并設(shè)置相關(guān)屬性,比如交換器類型、是否持久化等

3)生產(chǎn)者聲明一個隊(duì)列井設(shè)置相關(guān)屬性,比如是否排他、是否持久化、是否自動刪除等

4)生產(chǎn)者通過 bindingKey (綁定Key)將交換器和隊(duì)列綁定( binding )起來

5)生產(chǎn)者發(fā)送消息至RabbitMQ Broker,其中包含 routingKey (路由鍵)、交換器等信息

6) 相應(yīng)的交換器根據(jù)接收到的 routingKey 查找相匹配的隊(duì)列。

7)如果找到,則將從生產(chǎn)者發(fā)送過來的消息存入相應(yīng)的隊(duì)列中。

8)如果沒有找到,則根據(jù)生產(chǎn)者配置的屬性選擇丟棄還是回退給生產(chǎn)者

9)關(guān)閉信道。

10)關(guān)閉連接。

2、 消費(fèi)者接收消息的過程

1) 消費(fèi)者連接到RabbitMQ Broker ,建立一個連接(Connection ) ,開啟一個信道(Channel) 。

2)消費(fèi)者向RabbitMQ Broker 請求消費(fèi)相應(yīng)隊(duì)列中的消息,可能會設(shè)置相應(yīng)的回調(diào)函數(shù), 以及 做一些準(zhǔn)備工作

3)等待RabbitMQ Broker 回應(yīng)并投遞相應(yīng)隊(duì)列中的消息, 消費(fèi)者接收消息。

4)消費(fèi)者確認(rèn)( ack) 接收到的消息。

5)RabbitMQ 從隊(duì)列中刪除相應(yīng)已經(jīng)被確認(rèn)的消息。

6)關(guān)閉信道。

7)關(guān)閉連接。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-11-20 08:54:38

2010-09-27 10:19:09

DHCP工作流程

2009-06-05 10:26:05

struts工作流程

2022-11-02 15:11:44

LightHouseChrome插件

2011-03-31 10:54:01

Cacti工作流程

2025-04-15 04:00:00

2009-12-14 15:01:31

架構(gòu)師

2010-07-13 16:21:22

FIX協(xié)議

2010-07-28 17:19:28

ICMP協(xié)議

2010-06-24 16:40:16

Bittorrent協(xié)

2009-07-27 14:13:15

2011-03-29 09:30:12

Cacti

2010-06-12 17:44:19

ARP協(xié)議

2020-02-20 16:45:39

RabbitMQKafka架構(gòu)

2022-10-08 07:55:33

DemoMongoDB異步

2010-08-25 09:48:41

DHCP協(xié)議

2010-06-23 14:46:54

DHCP協(xié)議

2010-08-30 09:07:12

DHCP工作流程

2009-08-07 11:10:40

Netbeans ID

2020-01-15 08:52:40

RabbitMQSpringMybatis
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 伊人春色成人网 | 99久久精品免费看国产免费软件 | 成人福利在线观看 | 国产精品一区二区三区久久久 | 99成人| 国产精品久久久久久av公交车 | 精品欧美乱码久久久久久1区2区 | 蜜桃臀av一区二区三区 | 久草免费视 | 欧洲精品一区 | 中文字幕免费视频 | 亚洲男女视频在线观看 | 亚洲一区二区av | 黄a在线播放| 亚洲三区在线观看 | 国产一区二区精品在线 | www.一区二区三区 | 日韩中出| av在线免费网 | 五月婷婷亚洲 | 91啪影院 | 午夜精品一区二区三区免费视频 | 国产美女一区二区 | 91视频91| 波多野结衣二区 | 精品日韩一区二区 | 欧美中文一区 | 麻豆av在线免费观看 | 久久91| 天天色影视综合 | 妖精视频一区二区三区 | 亚洲精选一区二区 | 91色视频在线观看 | 国产一区二区免费电影 | 成人福利网 | 久久久久亚洲精品 | 国产精品视频免费观看 | 伊人av在线播放 | 一级二级三级黄色 | 在线欧美激情 | 宅男伊人|