2012-05-08 65 views
6

我在這裏沒有具體的查詢;只需要一些設計指導。MQTT vs MQ設計考慮因素

我在Node.js , MQTT and Websockets上遇到過這篇文章。 我想我們可以使用Node/Java + ActiveMQ + Websockets實現類似的目的。我的查詢是如何在MQ和MQTT之間進行選擇?與ActiveMQ相比,我可以在大中型項目中安全地使用像「mosquitto」這樣的「開放式」服務器嗎?

This article已經有了一些洞察力,看起來我應該同時使用MQ和MQTT,因爲如果我將來獲得輕量級客戶端,MQTT可能會有所幫助。

謝謝!

回答

5

除了Shashi所說的,它們具有不同的功能和用例。

MQTT爲pub/sub定義了一個標準的有線協議,正如Shashi指出的那樣,它是爲非常輕量級的環境設計的。因此,它具有非常小的線路格式,幾項基本的服務質量和基本功能集。另一方面,傳統的消息排隊系統通常是專有的(儘管AMQP旨在改變這種情況),既包括點對點也包括pub/sub,提供許多服務質量並且傾向於具有更重的線路格式,雖然這存在以支持增強的特徵集,例如回覆到尋址,協議轉換等

MQTT的一個很好的例子是,你必須在手機,平板電腦和機頂盒端點。這些具有最小的馬力,內存和系統資源。通常,來自這些客戶的連接要麼停留在MQTT上,要麼在他們自己之間進行交談,要麼通過橋接連接到企業級MQ,以便與後端應用程序進行互通。例如,基於MQTT的聊天客戶端可能會通過MQTT代理直接與另一個客戶交談。另外,基於MQTT的內容交付系統可以連接到企業消息傳遞網絡,該網絡託管廣告和其他內容,以交付到在手機和平​​板電腦上運行的應用程序。企業後端可以管理所有的廣告投放統計數據和視圖,MQTT支持允許在最終用戶設備上以最小的電池或馬力消耗來推送內容。

因此,MQTT用於功耗,帶寬和網絡穩定性問題的嵌入式系統和終端用戶設備。這通常與傳統MQ消息傳遞相結合,儘管我從未見過將MQTT用作傳統消息應用程序的專用傳輸。據推測,這是因爲MQTT缺乏一些更強大的功能,例如消息關聯,回覆尋址和點對點尋址,這些功能是20年來消息傳遞的核心。

+0

感謝您的例子! – SlowAndSteady

2

MQTT協議適用於小型設備,如傳感器,手機等具有較小內存佔用的設備。這些設備通常位於一個脆弱的網絡中,並且通常具有較低的計算能力。

這些設備通過MQTT協議連接到組織後端網絡,用於發送和接收消息。例如,輸油管道中的溫度傳感器會收集流過管道的油溫並將其發送到控制中心。作爲響應,可以通過MQTT將命令消息發送到另一個設備,以減少/停止通過該管道的油流量。

WebSphere MQ能夠向/從MQTT設備發送/接收消息。因此,如果您計劃實施基於消息傳遞的解決方案,其中涉及設備&傳感器,則可以考慮MQ和MQTT。

HTH

1

如已經討論的,MQTT定義了一個可應用的有線協議(即信息如何被組織,然後在被傳送之前被串行化)。如同基於JMS和AMQP的代理,其不同之處在於傳輸級別的有線協議AMQP定義了標準化的傳輸線協議,而不是JMS代理ActiveMQ定義了自己的專有格式,即OpenWire。當然,不像Mosquitto這樣的標準實現實現專有的有線傳輸協議(這會影響互操作性,但在性能方面可能是更好的選擇)。

回到問題。像Mosquitto這樣的經紀商可以根據您在可擴展性和可靠性方面的需求,在實際情況下使用:通常需要集羣來確保i。可用性,ii。可靠性和iii。可擴展性。經紀人認爲PAN(私人區域Netorks)通常不提供OTB(Out of the Box)這樣的功能--ActiveMQ提供這種功能。

最後,您可以根據自己的要求爲您選擇最佳解決方案。