Rabbitmq為什么使用信道channel呢


  大家都知道,在使用rabbitmq時不管是消費還是生產都需要創建信道(channel) 和connection(連接),如下圖producer示例。我們完全可以直接使用Connection就能完成信道的工作,為什么還要引入信道呢,試想這樣一個場景,一個應用有多個線程需要從rabbitmq中消費,或是生產消息,那么必然會建立很多個connection ,也就是多個tcp連接,對操作系統而言,建立和銷毀tcp連接是很昂貴的開銷,如果遇到使用高峰,性能瓶頸也隨之顯現,rabbitmq采用類似nio的做法,連接tcp連接復用,不僅可以減少性能開銷,同時也便於管理。
每個線程都把持一個信道,所以信道復用了TCP連接。同時rabbitmq可以確保每個線程的私密性,就像擁有獨立的連接一樣。當每個信道的流量不是很大時,復用單一的connection可以再產生性能瓶頸的情況下有效地節省tcp連接資源,但是當信道本身的流量很大時,這時候多個信道復用一個connection就會產生性能瓶頸,進而是整體的流量被限制了。此時就需要開辟多個connection,將這些信道均攤到這些connection中,至於這些相關調優策略需要根據業務自身的實際情況進行調節。 
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM