国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RabbitMQ的基本概念和七種隊列模式

這篇具有很好參考價值的文章主要介紹了RabbitMQ的基本概念和七種隊列模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

I. RabbitMQ的基本概念

1. 生產(chǎn)者/消費(fèi)者

  • 生產(chǎn)者(Producer)
    消息的創(chuàng)建者。
    負(fù)責(zé)創(chuàng)建和推送數(shù)據(jù)到消息服務(wù)器。

  • 消費(fèi)者(Consumer)
    消息的接收方。
    負(fù)責(zé)接收消息和處理數(shù)據(jù)。

2. 消息隊列(Queue)

消息隊列是RabbitMQ的內(nèi)部對象,用于存儲生產(chǎn)者的消息直到發(fā)送給消費(fèi)者,它是消費(fèi)者接收消息的地方。

消息隊列的重要屬性:

  • 持久性
    broker重啟前都有效。
  • 自動刪除
    在所有消費(fèi)者停止使用之后自動刪除。
  • 惰性
    沒有主動聲明隊列,調(diào)用會導(dǎo)致異常。
  • 排他性
    -一旦啟用,聲明它的消費(fèi)者才能使用。

3. 交換機(jī)(Exchange)

交換機(jī)用于接收,分配消息。

1. 生產(chǎn)者要先指定一個routing key,然后將消息發(fā)送到交換機(jī)。
2. routing key需要與exchange type和binding key聯(lián)合使用才能最終生效。
3. 交換機(jī)將消息路由到一個或多個隊列中,或丟棄。

交換機(jī)包含4中類型: direct, topic, fanout, headers。

  • direct(直連交換機(jī))
具有路由功能的交換機(jī),綁定到此交換機(jī)的時候需要指定一個routing_key,交換機(jī)發(fā)送消息的時候需要routing_key,會將消息發(fā)送道對應(yīng)的隊列。

先匹配,再投送

Direct Exchange是RabbitMQ的默認(rèn)交換機(jī)模式。
這是最簡單的模式。
它根據(jù)routing key全文匹配去尋找隊列。

在綁定隊列時會設(shè)定一個routing key(通常是隊列的名字)。
只有在消息的routing key與隊列匹配時,消息才會被交換機(jī)投送到綁定的隊列中。

  • topic(主題交換機(jī))
    在直連交換機(jī)基礎(chǔ)上增加模式匹配,也就是對routing_key進(jìn)行模式匹配,*代表一個單詞,#代表多個單詞。
    按規(guī)則轉(zhuǎn)發(fā)消息。

主題交換機(jī)(Topic Exchange)主要根據(jù)通配符轉(zhuǎn)發(fā)消息。
這種方式最靈活。
交換機(jī)和隊列的綁定會定義一種路由模式。
路由鍵(routing key)和路由模式匹配后,交換機(jī)才能轉(zhuǎn)發(fā)消息。

在這種交換機(jī)模式下,路由鍵(routing key)必須是一串字符,用"."隔開。
路由模式必須包含一個星號"*", 主要用于匹配路由鍵指定位置的一個單詞。
* 匹配一個單詞。
# 匹配0個或多個單詞。
eg:
binding key:                 *.com.#
匹配的routing key:     cn.com,  us.com.aa
不匹配:                         com.bb

  • headers(首部交換機(jī))
    忽略routing_key,使用Headers信息(一個Hash的數(shù)據(jù)結(jié)構(gòu))進(jìn)行匹配,優(yōu)勢在于可以有更多更靈活的匹配規(guī)則。
    根據(jù)應(yīng)用程序消息的特定屬性進(jìn)行匹配

  • fanout(扇形交換機(jī))
    廣播消息到所有隊列,沒有任何處理,速度最快。
    消息廣播的模式。

這種方式將消息廣播到所有綁定到它的隊列中。
不考慮routing key的值,即使配置了路由鍵,依然會被忽略。


4. 消息確認(rèn)

消息確認(rèn)是指當(dāng)一個消息從隊列中投遞給消費(fèi)者(consumer)后,消費(fèi)者會通知一下消息代理(broker)。

消息確認(rèn)可以自動,也可以由處理消息的開發(fā)者手動執(zhí)行。
當(dāng)啟用消息確認(rèn)后,消息代理需要收到來自消費(fèi)者的確認(rèn)回執(zhí)后,才完全將消息從隊列中刪除。

?
?

II. 七種隊列模式

1. 簡單模式(Hello World)

RabbitMQ的基本概念和七種隊列模式,rabbitmq,分布式

做最簡單的事情,一個生產(chǎn)者對應(yīng)一個消費(fèi)者,RabbitMQ相當(dāng)于一個消息代理,負(fù)責(zé)將A的消息轉(zhuǎn)發(fā)給B。
單生產(chǎn)者,單消費(fèi)者,單隊列。

應(yīng)用場景:

將發(fā)送的電子郵件放到消息隊列,然后郵件服務(wù)在隊列中獲取郵件并發(fā)送給收件人。

2. 工作隊列模式(Work queues)

RabbitMQ的基本概念和七種隊列模式,rabbitmq,分布式

在多個消費(fèi)者之間分配任務(wù)(競爭的消費(fèi)者模式),一個生產(chǎn)者對應(yīng)多個消費(fèi)者。
適用于資源密集型任務(wù), 單個消費(fèi)者處理不過來,需要多個消費(fèi)者進(jìn)行處理的場景。
單生產(chǎn)者,多消費(fèi)者,單隊列。

應(yīng)用場景:

一個訂單的處理需要10s,有多個訂單可以同時放到消息隊列,

然后讓多個消費(fèi)者同時并行處理,而不是單個消費(fèi)者的串行消費(fèi)。

3. 發(fā)布訂閱模式(Publish/Subscribe)

RabbitMQ的基本概念和七種隊列模式,rabbitmq,分布式

一次向許多消費(fèi)者發(fā)送消息,將消息將廣播到所有的消費(fèi)者。
單生產(chǎn)者,多消費(fèi)者,多隊列。

應(yīng)用場景:

更新商品庫存后需要通知多個緩存和多個數(shù)據(jù)庫。

結(jié)構(gòu)如下:

  • 一個fanout類型交換機(jī)扇出兩個消息隊列,分別為緩存消息隊列、數(shù)據(jù)庫消息隊列
  • 一個緩存消息隊列對應(yīng)著多個緩存消費(fèi)者
  • 一個數(shù)據(jù)庫消息隊列對應(yīng)著多個數(shù)據(jù)庫消費(fèi)者

4. 路由模式(Routing)

RabbitMQ的基本概念和七種隊列模式,rabbitmq,分布式

根據(jù)Routing Key有選擇地接收消息。
多消費(fèi)者,選擇性多隊列,每個隊列通過routing key全文匹配。

發(fā)送消息到交換機(jī)并且要指定路由鍵(Routing key) 。
消費(fèi)者將隊列綁定到交換機(jī)時需要指定路由key,僅消費(fèi)指定路由key的消息。

應(yīng)用場景:

在商品庫存中增加了1臺iphone12,iphone12促銷活動消費(fèi)者指定routing key為iphone12 promote,
只有此促銷活動會接收到消息,其它促銷活動不關(guān)心也不會消費(fèi)此routing key的消息。

5. 主題模式(Topics)

RabbitMQ的基本概念和七種隊列模式,rabbitmq,分布式

主題交換機(jī)方式接收消息,將routing key和模式進(jìn)行匹配。
多消費(fèi)者,選擇性多隊列,每個隊列通過模式匹配。

隊列需要綁定在一個模式上。
#匹配一個詞或多個詞,*只匹配一個詞。

應(yīng)用場景:

iphone促銷活動可以接收主題為多種iPhone的消息,如iphone12、iphone13等。

6. 遠(yuǎn)程過程調(diào)用(RPC)

RabbitMQ的基本概念和七種隊列模式,rabbitmq,分布式

在遠(yuǎn)程計算機(jī)上運(yùn)行功能并等待結(jié)果。

應(yīng)用場景:

需要等待接口返回數(shù)據(jù),如訂單支付。

7. 發(fā)布者確認(rèn)(Publisher Confirms)

與發(fā)布者進(jìn)行可靠的發(fā)布確認(rèn),發(fā)布者確認(rèn)是RabbitMQ擴(kuò)展,可以實現(xiàn)可靠的發(fā)布。

在通道上啟用發(fā)布者確認(rèn)后,RabbitMQ將異步確認(rèn)發(fā)送者發(fā)布的消息,這意味著它們已在服務(wù)器端處理。

應(yīng)用場景:

對于消息可靠性要求較高,比如錢包扣款。

?
https://www.cnblogs.com/davidgu/p/14702449.html文章來源地址http://www.zghlxwxcb.cn/news/detail-546441.html

到了這里,關(guān)于RabbitMQ的基本概念和七種隊列模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • rabbitmq-常見七種消息隊列-控制臺界面管理-python-實現(xiàn)簡單訪問

    rabbitmq-常見七種消息隊列-控制臺界面管理-python-實現(xiàn)簡單訪問

    1.1.生產(chǎn)者和消費(fèi)者 生產(chǎn)者(Producer) 消息的創(chuàng)建者。 負(fù)責(zé)創(chuàng)建和推送數(shù)據(jù)到消息服務(wù)器。 消費(fèi)者(Consumer) 消息的接收方。 負(fù)責(zé)接收消息和處理數(shù)據(jù)。 1.2.消息隊列(Queue) 消息隊列是RabbitMQ的內(nèi)部對象,用于存儲生產(chǎn)者的消息直到發(fā)送給消費(fèi)者,它是消費(fèi)者接收消息的地方。 消息

    2024年02月03日
    瀏覽(18)
  • (三)RabbitMQ七種模式介紹與代碼演示

    (三)RabbitMQ七種模式介紹與代碼演示

    Lison dreamlison@163.com , v1.0.0 , 2023.06.22 交換機(jī)概念 交換機(jī)可以理解成具有路由表的路由程序,僅此而已。每個消息都有一個稱為路由鍵(routing key)的屬性,就是一個簡單的字符串。 最新版本的RabbitMQ有四種交換機(jī)類型,分別是Direct exchange、Fanout exchange、Topic exchange、Headers exc

    2024年02月15日
    瀏覽(21)
  • 消息隊列RabbitMQ.01.基本使用

    消息隊列RabbitMQ.01.基本使用

    目錄 ?RabbitMQ的作用 Message queue 釋義 ?問題思考 ?存在的問題 優(yōu)化方案? 案例分析? 帶來的好處? 消息隊列特點(diǎn) ?Email郵件案例分析 Docker安裝部署RabbitMQ 1.下拉鏡像 2.運(yùn)行RabbitMQ ?3.打開防火墻端口號并重新運(yùn)行防火墻 4.容器啟動后,可以通過 docker logs 容器 查看日志 6.通過剛才

    2024年01月21日
    瀏覽(57)
  • RabbitMQ:工作隊列模式

    RabbitMQ:工作隊列模式

    ??個人主頁:不斷前進(jìn)的皮卡丘 ??博客描述:夢想也許遙不可及,但重要的是追夢的過程,用博客記錄自己的成長,記錄自己一步一步向上攀登的印記 ??個人專欄:消息中間件 工作隊列(又名: 任務(wù)隊列 )背后的主要思想是避免立即執(zhí)行資源密集型任務(wù)并等待其完成。相反

    2024年01月23日
    瀏覽(26)
  • RabbitMQ工作模式-工作隊列

    RabbitMQ工作模式-工作隊列

    官網(wǎng)關(guān)于工作模式的解釋地址:https://www.rabbitmq.com/getstarted.html Work Queue(工作隊列) 生產(chǎn)者發(fā)消息,啟動多個消費(fèi)者來消費(fèi)消息,每個消費(fèi)者僅消費(fèi)部分消息,可達(dá)到負(fù)載均衡的效果。 創(chuàng)建生產(chǎn)者 創(chuàng)建消費(fèi)者 首先運(yùn)行消息費(fèi),為了測試工作隊列模式,消費(fèi)都需要啟動多個,

    2024年02月10日
    瀏覽(20)
  • 消息隊列之RabbitMQ工作模式

    提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加 消息隊列之RabbitMQ工作模式 提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 提示:這里可以添加本文要記錄的大概內(nèi)容: 在這篇博客中,我將深入探討 RabbitMQ 的工作模式,帶你

    2024年01月18日
    瀏覽(114)
  • RabbitMQ消息隊列的工作模式

    官方文檔地址:https://www.rabbitmq.com/getstarted.html 工作模式其實就是消息隊列分發(fā)消息的路由方式。 RabbitMQ常用的幾種工作模式: 簡單模式 WorkQueues工作隊列模式 PubSub生產(chǎn)者/PubSub消費(fèi)者模式 Routing路由模式 Topics通配符模式 發(fā)布/訂閱模式(Publish/Subscribe):該模式用于一對多的

    2024年02月15日
    瀏覽(26)
  • RabbitMQ 的基本概念

    RabbitMQ 的基本概念

    MQ全稱 Message Queue(消息隊列),是在消息的傳輸過程中保存消息的容器。多用于分布式系統(tǒng)之間進(jìn)行通信。消息隊列就是所謂的存放消息的隊列。 消息隊列解決的不是存放消息的隊列的?的,解決的是 通信問題 。 傳統(tǒng)方式,系統(tǒng)之間直接調(diào)用 (http協(xié)議 httpclient/openFeign)

    2024年01月17日
    瀏覽(13)
  • RabbitMQ學(xué)習(xí)——發(fā)布訂閱/fanout模式 & topic模式 & rabbitmq回調(diào)確認(rèn) & 延遲隊列(死信)設(shè)計

    RabbitMQ學(xué)習(xí)——發(fā)布訂閱/fanout模式 & topic模式 & rabbitmq回調(diào)確認(rèn) & 延遲隊列(死信)設(shè)計

    1.rabbitmq隊列方式的梳理,點(diǎn)對點(diǎn),一對多; 2.發(fā)布訂閱模式,交換機(jī)到消費(fèi)者,以郵箱和手機(jī)驗證碼為例; 3.topic模式,根據(jù)規(guī)則決定發(fā)送給哪個隊列; 4.rabbitmq回調(diào)確認(rèn),setConfirmCallback和setReturnsCallback; 5.死信隊列,延遲隊列,創(chuàng)建方法,正?!佬牛O(shè)置延遲時間; 點(diǎn)對

    2024年02月13日
    瀏覽(92)
  • RabbitMQ基礎(chǔ)(2)——發(fā)布訂閱/fanout模式 & topic模式 & rabbitmq回調(diào)確認(rèn) & 延遲隊列(死信)設(shè)計

    RabbitMQ基礎(chǔ)(2)——發(fā)布訂閱/fanout模式 & topic模式 & rabbitmq回調(diào)確認(rèn) & 延遲隊列(死信)設(shè)計

    1.rabbitmq隊列方式的梳理,點(diǎn)對點(diǎn),一對多; 2.發(fā)布訂閱模式,交換機(jī)到消費(fèi)者,以郵箱和手機(jī)驗證碼為例; 3.topic模式,根據(jù)規(guī)則決定發(fā)送給哪個隊列; 4.rabbitmq回調(diào)確認(rèn),setConfirmCallback和setReturnsCallback; 5.死信隊列,延遲隊列,創(chuàng)建方法,正常—死信,設(shè)置延遲時間; 點(diǎn)對

    2024年02月10日
    瀏覽(98)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包