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
消息的持久化,一般有以下幾種方式
(2)持久哈到KV存儲,比如Redis
(3)文件形式持久化
消息的持久化,防止了系統掛掉后,仍然能夠從之前備份中恢復出來。
5.Broker的Buffer滿了怎么辦?
我們知道Broker是用來存儲需要處理的消息,如果消息過多,導致Buffer滿了怎么辦?
這時候就會采取一定的策略來丟棄已有的消息。
6.事務的支持
正如上面所談到的訂單的操作,因此消息中間件中也會提供對分布式事務的支持。
7.定時消息
在實際應用中,有時也會需要定時消費的功能,因此中間件中,也會對消息進行排序,然后實現定時發送或者消費消息的業務需求。
8.消息重試
考慮一下這個問題,如果消息消費失敗后,怎么辦,是等待處理這個消息呢?還是讓消費者在此消費一次呢?通常情況下,采取后者的形式,因為大多數情況下,消費失敗的原因在於該消息本身的原因,如果在此消費這個消息的話,還是會出現失敗的情況,因此通常采取在此發送消息在此消費消息的方式。
9.回溯消費
什么是回溯消費呢?對於已經消費成功的消息,是不是在Broker中就丟棄該消息呢?顯而易見是不可能的,因此需要中間件對該功能支持,支持已經消費的信息進行時間段內的存儲,等待某一刻內該消息會被重新消費的可能。
MQ適用場景介紹
MQ消息隊列是應運松偶合的概念而產生的,主要以隊列和發布訂閱為消息傳輸機制,以異步的方式將消息可靠的傳輸到消費端的一種基礎產品。
它被廣泛的應用與跨平台、跨系統的分布式系統之間,為它們提供高效可靠的異步傳輸機制。
使用MQ將彼此協作的客戶端和服務端連接起來,使他們可以交換消息。

如客戶端與服務端需要安全可靠的交互,可以將一個MQ的隊列作為安全通道,是客戶端與服務端能夠安全高效的進行異步通訊。
對於由許多獨立開發的服務組成的分布式系統,倘若要將它們組成一個完整的系統,這些服務必須能夠可靠地交互,同時,為了系統的健壯性,
每個服務之間又不能產生過分緊密的依賴關系,這樣就可以通過消息總線將不同的服務連接起來,允許它們異步的傳遞數據。
