天天看點

消息隊列RabbitMQ的常見面試題1、使用RabbitMQ有什麼好處?2、RabbitMQ 中的 broker 是指什麼?cluster 又是指什麼?3、RabbitMQ 概念裡的 channel、exchange 和 queue 是邏輯概念,還是對應着程序實體?分别起什麼作用?

1、使用RabbitMQ有什麼好處?

  1. 解耦,系統A在代碼中直接調用系統B和系統C的代碼,如果将來D系統接入,系統A還需要修改代碼,過于麻煩!
  2. 異步,将消息寫入消息隊列,非必要的業務邏輯以異步的方式運作,加快響應速度。
  3. 削峰,并發量大的時候,所有的請求直接怼到資料庫,造成資料庫連接配接異常。

2、RabbitMQ 中的 broker 是指什麼?cluster 又是指什麼?

broker 是指一個或多個 erlang node 的邏輯分組,且 node 上運作着 RabbitMQ 應用程式。cluster 是在 broker 的基礎之上,增加了 node 之間共享中繼資料的限制。

3、RabbitMQ 概念裡的 channel、exchange 和 queue 是邏輯概念,還是對應着程序實體?分别起什麼作用?

queue 隊列:具有自己的 erlang 程序;

exchange 交換機:内部實作為儲存 binding 關系的查找表;

channel 通道:是實際進行路由工作的實體,即負責按照 routing_key 将 message 投遞給 queue 。由 AMQP 協定描述可知,channel 是真實 TCP 連接配接之上的虛拟連接配接,所有 AMQP 指令都是通過 channel 發送的,且每一個 channel 有唯一的 ID。一個 channel 隻能被單獨一個作業系統線程使用,故投遞到特定 channel 上的 m