最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

RabbitMQ中的Channel和Exchange詳解

 更新時間:2023年08月28日 10:13:12   作者:weixin_44463587  
這篇文章主要介紹了RabbitMQ中的Channel和Exchange詳解,創(chuàng)建和銷毀TCP連接很耗時,打開太多TCP連接,耗操作系統(tǒng)資源,并發(fā)量大到一定程度,系統(tǒng)的吞吐量會降低,使用一個connection多channel的方式,可以提升連接的利用率,需要的朋友可以參考下

channel 

有了TCP連接后,還需要channel的原因如下:

  • 創(chuàng)建和銷毀TCP連接很耗時;
  • 打開太多TCP連接,耗操作系統(tǒng)資源,并發(fā)量大到一定程度,系統(tǒng)的吞吐量會降低;
  • 使用一個connection多channel的方式,可以提升連接的利用率。

因此采用多個channel多路復(fù)用一個TCP連接的方式才比較合理

exchange(交換機)

生產(chǎn)者發(fā)消息發(fā)往交換機,交換機會自己投遞消息到綁定的queue隊列

1.exchange根據(jù)什么規(guī)則把消息投遞到哪些queue中?

exchange有4種類型

  • direct: 對routing_key進行嚴(yán)格匹配,當(dāng)消息來到的時候,只有exchange與某queue綁定的routing_key完全匹配才將消息投遞到該queue
  • topic: 對routing_key進行通配符模糊匹配,滿足條件的queue都能收到消息,這里的routing_key以"."分隔,*匹配一個單詞,#匹配多個單詞,如果同一個queue滿足多個條件不會被投遞多次

如果消息的routingkey是quick.orange.rabbit,那么Q1 Q2都會收到這條消息。

如果消息的routingkey是quick.orange.fox,那么Q1會收到這條消息

  • headers: 根據(jù)消息體內(nèi)的headers屬性匹配,綁定的時候可以制定鍵值對。不依賴routing_key匹配。

大致邏輯與direct差不多,只不過不是用的routing_key來匹配

  • fanout: 轉(zhuǎn)發(fā)消息到所有綁定隊列,不依賴routing_key匹配

在不需要路由的時候,一般是使用的這個類型的exchange。

  1. 發(fā)布訂閱:兩個queue綁定到同一個exchange上,那么同一個消息被發(fā)送到exchange后,exchange會把這個消息發(fā)給綁定的所有隊列,兩個消費者,一人消費一個隊列,這就在這兩個消費者之間達(dá)到了發(fā)布訂閱的效果
  2.  競爭消費:兩個消費者消費同一個隊列,這就達(dá)到了這兩個消費者之間的競爭消費效果。

注意,實際上在寫代碼的時候不顯示指定exchange的數(shù)據(jù)是發(fā)送到一個默認(rèn)的exchange上的。

2.exchange持久化怎么搞?

如果不設(shè)置持久化,broker掛了,再重啟,這個exchange就不存在了。

在客戶端聲明exchange的時候有個入?yún)砜刂剖欠癯志没?/p>

而autoDelete則是,當(dāng)沒有queue綁定的時候是否自動刪除這個exchange

3.生產(chǎn)者ACK機制?

事務(wù)或者confirm機制:

rabbitmq生產(chǎn)者確保消息一定送達(dá)

這個需要借助Server和MQ的交互實現(xiàn)(tx-select/commit, ok/fail)

4.投遞方法

basicPublish中的mandatory和immediate mandatory

當(dāng)mandatory標(biāo)志位設(shè)置為true時如果exchange根據(jù)自身類型和消息routeKey無法找到一個符合條件的queue,那么會調(diào)用basic.return方法將消息返回給生產(chǎn)者

(Basic.Return + Content-Header + Content-Body);

當(dāng)mandatory設(shè)置為false時,出現(xiàn)上述情形broker會直接將消息扔掉。

immediate 當(dāng)immediate標(biāo)志位設(shè)置為true時,如果exchange在將消息路由到queue(s)時發(fā)現(xiàn)對于的queue上沒有消費者,那么這條消息不會放入隊列中。

當(dāng)與消息routeKey關(guān)聯(lián)的所有queue(一個或者多個)都沒有消費者時,該消息會通過basic.return方法返還給生產(chǎn)者。

換句話說,無法找到一個消費者時,消息返還給生產(chǎn)者

到此這篇關(guān)于RabbitMQ中的Channel和Exchange詳解的文章就介紹到這了,更多相關(guān)RabbitMQ的Channel和Exchange內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 實例詳解SpringBoot默認(rèn)的JSON解析方案

    實例詳解SpringBoot默認(rèn)的JSON解析方案

    JSON數(shù)據(jù)現(xiàn)在是我們開發(fā)中用的最多的,百分之九十的數(shù)據(jù)都是通過JSON方式進行傳輸,下面這篇文章主要給大家介紹了關(guān)于SpringBoot默認(rèn)的JSON解析方案的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Java基礎(chǔ)學(xué)習(xí)之運算符相關(guān)知識總結(jié)

    Java基礎(chǔ)學(xué)習(xí)之運算符相關(guān)知識總結(jié)

    今天帶大家復(fù)習(xí)Java基礎(chǔ)知識,文中對Java運算符相關(guān)知識作了詳細(xì)總結(jié),對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • java數(shù)學(xué)工具類Math詳解(round方法)

    java數(shù)學(xué)工具類Math詳解(round方法)

    這篇文章主要為大家詳細(xì)介紹了java數(shù)學(xué)工具類Math,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • SpringBoot+Redis實現(xiàn)不重復(fù)消費的隊列的示例代碼

    SpringBoot+Redis實現(xiàn)不重復(fù)消費的隊列的示例代碼

    本文主要介紹了SpringBoot+Redis實現(xiàn)不重復(fù)消費的隊列的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • SpringCloud?Gateway實現(xiàn)請求解密和響應(yīng)加密的過程解析

    SpringCloud?Gateway實現(xiàn)請求解密和響應(yīng)加密的過程解析

    這篇文章主要介紹了SpringCloud?Gateway實現(xiàn)請求解密和響應(yīng)加密的相關(guān)知識,本文環(huán)境使用比較新的?Java?17?和?SpringBoot?3.1.5,對應(yīng)到Spring的版本是?6.0.13,本文重心是網(wǎng)關(guān)項目,需要的朋友可以參考下
    2023-11-11
  • springboot全局字符編碼設(shè)置解決亂碼問題

    springboot全局字符編碼設(shè)置解決亂碼問題

    這篇文章主要介紹了springboot全局字符編碼設(shè)置解決亂碼問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java Socket UDP實例詳解

    java Socket UDP實例詳解

    這篇文章主要介紹了java Socket UDP實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java8中LocalDateTime與時間戳timestamp的互相轉(zhuǎn)換

    Java8中LocalDateTime與時間戳timestamp的互相轉(zhuǎn)換

    這篇文章主要給大家介紹了關(guān)于Java8中LocalDateTime與時間戳timestamp的互相轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java中this關(guān)鍵字的詳細(xì)使用介紹

    java中this關(guān)鍵字的詳細(xì)使用介紹

    大家好,本篇文章主要講的是java中this關(guān)鍵字的詳細(xì)使用介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Mybatis中的延遲加載詳細(xì)解析

    Mybatis中的延遲加載詳細(xì)解析

    這篇文章主要介紹了Mybatis中的延遲加載詳細(xì)解析,延遲加載就是在真正需要使用數(shù)據(jù)時才發(fā)起查詢,不用的時候不進行查詢,按需加載(懶加載),需要的朋友可以參考下
    2023-12-12

最新評論

南充市| 岳西县| 乌苏市| 邮箱| 井研县| 竹北市| 邵阳市| 鹤壁市| 新建县| 高雄市| 肃宁县| 平远县| 元江| 沁水县| 望奎县| 五原县| 莱州市| 高要市| 岳阳市| 尉氏县| 旌德县| 洮南市| 开原市| 奎屯市| 武山县| 化德县| 剑河县| 重庆市| 瑞安市| 河西区| 荆州市| 鸡东县| 新宾| 襄樊市| 南开区| 阿坝县| 讷河市| 中江县| 东港市| 浮梁县| 阳朔县|