消息中間件簡介


Android消息推送怎么實現? - petercao - 博客園
http://www.cnblogs.com/bluestorm/p/5752626.html

 

MQ消息中間件技術 - 一名菜鳥架構師的心路歷程 - 博客頻道 - CSDN.NET
http://blog.csdn.net/apanious/article/details/51014396

 

我對消息中間件的理解 - - 博客頻道 - CSDN.NET
http://blog.csdn.net/luckyzhoustar/article/details/50411500

 

 

專業術語定義: 

消息:兩台計算機之間傳送的數據單位,例如字符串、文本等

 消息隊列:消息的容器,用於在消息傳遞的過程中保存消息的容器,充當消息源和目標之間的中間橋梁。隊列的只要目的就在於提供路由保證消息的傳遞。

 消息隊列網絡:是指能夠相互之間發送消息的一組計算機。網絡中不同的計算機在消息處理過程中扮演者不同的角色,有的是發送者,有的是接受者。

 

對於消息中間件,常見的角色大致也就有Producer(生產者)、Consumer(消費者)、Broker(中轉角色),有這么幾個主要的角色,那么消息中間件能為我們帶來那些功能呢?

 1.Message Priority

 Producer把消息發送給Broker來存儲,那么我們就可以再消息隊列中對我們的消息來進行排序,實現不同的優先級。從而滿足我們復雜的業務需求。

 2.Message Order

 消息排序,有的消息的處理是需要按照一定的順序進行處理的,比如用戶的創建訂單、訂單付款、訂單完成。那么對於消費者也需要按照這個流程來消費,否則就沒有意義了。

 3.Message Filter

 在消息對立中,也可以對我們的消息進行過濾,比如按照消息類型等條件來過濾

 4.Message Persistence

 消息的持久化,一般有以下幾種方式

 (1)持久化到數據庫,比如MySQL

 (2)持久哈到KV存儲,比如Redis

 (3)文件形式持久化

 消息的持久化,防止了系統掛掉后,仍然能夠從之前備份中恢復出來。

 5.Broker的Buffer滿了怎么辦?

 我們知道Broker是用來存儲需要處理的消息,如果消息過多,導致Buffer滿了怎么辦?

 這時候就會采取一定的策略來丟棄已有的消息。

 6.事務的支持

 正如上面所談到的訂單的操作,因此消息中間件中也會提供對分布式事務的支持。

 7.定時消息

 在實際應用中,有時也會需要定時消費的功能,因此中間件中,也會對消息進行排序,然后實現定時發送或者消費消息的業務需求。

 8.消息重試

 考慮一下這個問題,如果消息消費失敗后,怎么辦,是等待處理這個消息呢?還是讓消費者在此消費一次呢?通常情況下,采取后者的形式,因為大多數情況下,消費失敗的原因在於該消息本身的原因,如果在此消費這個消息的話,還是會出現失敗的情況,因此通常采取在此發送消息在此消費消息的方式。

 9.回溯消費

 什么是回溯消費呢?對於已經消費成功的消息,是不是在Broker中就丟棄該消息呢?顯而易見是不可能的,因此需要中間件對該功能支持,支持已經消費的信息進行時間段內的存儲,等待某一刻內該消息會被重新消費的可能。

 

MQ適用場景介紹

MQ消息隊列是應運松偶合的概念而產生的,主要以隊列和發布訂閱為消息傳輸機制,以異步的方式將消息可靠的傳輸到消費端的一種基礎產品。

它被廣泛的應用與跨平台、跨系統的分布式系統之間,為它們提供高效可靠的異步傳輸機制。

  • 消息通道(Message Channel)

       使用MQ將彼此協作的客戶端和服務端連接起來,使他們可以交換消息。

如客戶端與服務端需要安全可靠的交互,可以將一個MQ的隊列作為安全通道,是客戶端與服務端能夠安全高效的進行異步通訊。

  • 消息總線(Message Bus)

      對於由許多獨立開發的服務組成的分布式系統,倘若要將它們組成一個完整的系統,這些服務必須能夠可靠地交互,同時,為了系統的健壯性,

每個服務之間又不能產生過分緊密的依賴關系,這樣就可以通過消息總線將不同的服務連接起來,允許它們異步的傳遞數據。

  • 消息路由(Message Router)

       通過消息路由,可以將發送到MQ指定隊列的消息根據規則路由到不同的隊列。

此外,JMS規范還支持通過selector條件,對消息進行過濾,可以用多個消費者消費同一個隊列的消息,每個消費者只消費自己感興趣的消息。

  • 發布/訂閱(Publicsher/Subscriber)

      發布/訂閱模式用於一對多的通訊,當消息發布者向一個主題(Topic)發送一條消息后,該主題的所有訂閱者都會收到這條消息。


免責聲明!

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



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