亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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多路復用一個TCP連接的方式才比較合理

exchange(交換機)

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

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

exchange有4種類型

  • direct: 對routing_key進行嚴格匹配,當消息來到的時候,只有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ā)給綁定的所有隊列,兩個消費者,一人消費一個隊列,這就在這兩個消費者之間達到了發(fā)布訂閱的效果
  2.  競爭消費:兩個消費者消費同一個隊列,這就達到了這兩個消費者之間的競爭消費效果。

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

2.exchange持久化怎么搞?

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

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

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

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

事務或者confirm機制:

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

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

4.投遞方法

basicPublish中的mandatory和immediate mandatory

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

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

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

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

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

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

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

相關文章

  • java equals和=,==的區(qū)別詳細介紹

    java equals和=,==的區(qū)別詳細介紹

    這篇文章主要介紹了java equals和=,==的區(qū)別,學習Java的朋友對equals 和== 這個概念開始使用的時候會有疑問,很難辨別如何正確使用,這里幫大家詳細講解該知識點,希望大家能掌握,有需要的小伙伴可以參考下
    2016-10-10
  • Gauva使用ListenableFuture介紹說明

    Gauva使用ListenableFuture介紹說明

    并發(fā)是一個困難問題,但是通過強大和強大的抽象能夠顯著的簡化工作。為了簡化問題,Gauva使用ListenableFuture擴展了JDK的Future接口,這篇文章主要介紹了Gauva使用ListenableFuture
    2023-01-01
  • Spring HandlerInterceptor實現(xiàn)原理代碼解析

    Spring HandlerInterceptor實現(xiàn)原理代碼解析

    這篇文章主要介紹了Spring HandlerInterceptor實現(xiàn)原理代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 解決springboot application.yml變灰色的問題

    解決springboot application.yml變灰色的問題

    這篇文章主要介紹了解決springboot application.yml變灰色的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • java Unicode和UTF-8之間轉(zhuǎn)換實例

    java Unicode和UTF-8之間轉(zhuǎn)換實例

    這篇文章主要介紹了java Unicode和UTF-8之間轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Centos中yum方式安裝java的實現(xiàn)示例

    Centos中yum方式安裝java的實現(xiàn)示例

    這篇文章主要介紹了Centos中yum方式安裝java的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • MybatisPlus代碼生成器的使用方法詳解

    MybatisPlus代碼生成器的使用方法詳解

    在這里我將展示如何自動生成實體類、控制層、服務層、mapper等代碼,這些基礎的代碼全部不需要我們手動創(chuàng)建,由MybatisPlus自動幫我們完成,我們只需要告訴MybatisPlus怎么生成這些代碼就可以了,在此之前我們需要配置好測試的環(huán)境,數(shù)據(jù)庫和表數(shù)據(jù) ,需要的朋友可以參考下
    2021-06-06
  • 解決Java變異出現(xiàn)錯誤No enclosing instance of type XXX is accessible

    解決Java變異出現(xiàn)錯誤No enclosing instance of type XXX is accessible

    這牌你文章主要給大家分享解決Java變異出現(xiàn)錯誤,具體的饑餓絕方案請看下面文章的內(nèi)容,需要的朋友可以參考一下,希望能幫助到你
    2021-09-09
  • Spring?Boot的幾種統(tǒng)一處理方式梳理小結

    Spring?Boot的幾種統(tǒng)一處理方式梳理小結

    這篇文章主要為大家介紹了Spring?Boot的幾種統(tǒng)一處理方式梳理小結,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 詳解Java設計模式之外觀模式

    詳解Java設計模式之外觀模式

    在Java開發(fā)中,設計模式是一種十分常見的編程思想,它可以幫助我們解決很多實際開發(fā)中的問題,本篇文章將介紹一種常見的設計模式——外觀模式,并結合實際的開發(fā)場景進行講解,需要的朋友可以參考下
    2023-06-06

最新評論