消息隊列技術是分佈式應用間交換信息的一種技術。消息隊列能夠駐留在內存或者磁盤上,隊列存儲消息直到它們被應用程序讀走。經過消息隊列,應用程序能夠獨立的執行,它們不須要知道彼此的位置,或者在繼續執行前不須要等待接受程序接收此消息。html
消息隊列相關的概念有:node
本地隊列按照功能可劃分爲初始化隊列,傳輸隊列,目標隊列和死信隊列。數據庫
初始化隊列用做消息觸發功能。服務器
傳輸隊列只是暫存待傳的消息,條件許可的狀況下,經過管道將消息傳送到其餘的隊列管理器。網絡
目標隊列是消息的目的地,能夠長期存放消息。異步
若是消息不能送達目標隊列,也不能再路由出去,則被自動放入死信隊列保存。socket
消息隊列的主要特色是鬆耦合。尤爲是分佈式環境下的應用程序,若是須要進行數據的交換,須要結合主機間和主機內部進程間的通訊知識,編寫大量的代碼,和應用程序自己牢牢耦合在一塊兒,此外,還要面對應用所在的不一樣環境的差別。而有了消息隊列中間件,分佈式環境下的數據傳輸和交換工做就徹底移交給了消息隊列中間件,並讓他來確保數據傳輸的可靠性,此外還提供獨有的異步傳輸機制,便於和異步事務處理的應用整合。分佈式
消息隊列的特色有:函數
消息隊列適用的場景有:學習
ZeroMQ(ZMQ)號稱史上最快中間件。它對socket通訊進行了封裝,使得咱們不須要寫一行socket函數調用就能完成複雜的網絡通訊。和通常意義上的消息隊列產品不一樣的是,它沒有消息隊列服務器,而更像是一個網絡通訊庫。使用它可以輕鬆的完成多個node之間的傳輸。
ZMQ有三個基本通訊模型:
參考資料:
【MQ消息隊列】:http://blog.csdn.net/wxyfighting/article/details/8866437
【ZeroMQ的學習和研究】:http://www.searchtb.com/2012/08/zeromq-primer.html
【ZMQ官網】:http://zeromq.org