RabbitMQ入門_08_所謂的點對點與發布訂閱模型


A. JMS 模型

JMS 中定義了點對點和發布訂閱兩種消息模型,原來以為 AMQP 協議中 direct Exchange 對應點對點模型,topic Exchange 對應發布訂閱模型,fanout Exchange 對應簡化的發布訂閱模型。可學習下來,發現根本不是那么一回事。

實際上,用三種 Exchange 都可以實現點對點與發布訂閱模型。

點對點模型:

  • direct Exchange:創建隊列A,通過任意綁定鍵綁定到 Exchange,消息發送使用相同的綁定鍵
  • fanout Exchange:創建隊列A,綁定到 Exchange
  • topic Exchange:創建隊列A,通過任意綁定鍵綁定到 Exchange,消息發送使用相同的綁定鍵

發布訂閱模型:

  • direct Exchange:創建多個隊列,通過為每個隊列設定多個綁定,也能實現相對復雜的發布訂閱模型
  • fanout Exchange:創建多個隊列,綁定到 Exchange,這是簡化的發布訂閱模型
  • topic Exchange:創建多個隊列,通過帶通配符的綁定鍵實現復雜而又靈活的發布訂閱模型

簡而言之,AMQP 不按 JMS 那一套玩法玩。說白了,AMQP 中所有的隊列都遵照 JMS 中的點對點模型,發布訂閱實質上是通過 Exchange 的邏輯將消息復制到多個隊列來實現的

B. 好文推薦

好的文章,幾張圖就能讓你深入理解一個系統。推薦閱讀:http://blog.csdn.net/lizhitao/article/details/47723105

只拿一張圖作分析:
RabbitMQ pub/sub

這是 RabbitMQ 實現發布訂閱的邏輯圖。每個訂閱組訂閱自己感興趣的消息類型,它從一個獨占的隊列中獲取這些消息。訂閱組內部多個消費者共同分擔這些消息的處理。消息發布者將消息發送到 Exchange,由 Exchange 負責將每條消息分發到正確的隊列中(可能會同時分發到多個隊列)。


免責聲明!

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



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