AMQP與MQTT之間的區別
在過去幾十年中,用於廣泛部署的消息的異步排隊的開放源協議是AMQP vs MQTT。最近,它已適應其新更新。
AMQP有意成為國際標准組織或國際電化學委員會的一部分,並被OASIS選擇,MQTT已采用Eclipse。
AMQP使用Wire執行其消息傳遞隊列。因此,有線協議在網絡上轉換為字節值的洪流。
MQTT是為具有最小帶寬的受限設備而開發的。這是一個輕量級的廣播系統,用戶可以像客戶端一樣傳輸和接收消息。
AMQP與MQTT之間的關鍵區別
物聯網中同時使用了AMQP和MQTT。但是,讓我們討論主要差異:
- MQTT具有客戶端/代理體系結構,而AMQP具有客戶端或代理以及客戶端或服務器體系結構。
- MQTT遵循發布和訂閱的抽象,而AMQP遵循響應或請求以及Publish或訂閱的方法。
- AMQP的標頭大小為8個字節,MQTT為2個字節。
- MQTT的消息大小較小且已定義,而AMQP的價格可協商且未定義。
- MQTT的方法是連接,發布,關閉,訂閱和斷開連接。
- AMQP遵循消費,交付,發布,獲取,選擇,確認,刪除,恢復,拒絕,打開和關閉。
- MQTT對緩存和代理有部分支持,而AMQP提供了全部支持。
- AMQP和MQTT都遵循TCP協議,二進制標准和開放源代碼排隊系統。
- AMQP提供的安全性是IPSec,SASL,TLS或SSL,而MQTT僅提供TLS或SSL安全標准。AMQP與TCP一起使用SCTP進行傳輸。OASIS支持AMQP和MQTT。
- MQTT交付的服務質量非常好,並且會忘記QoS是否為0。如果QoS為1,則至少為1;如果QoS為2,則為1。AMQP提供的服務質量是用於結算和取消類似於MQTT的格式。
AMQP與MQTT對照表
以下是AMQP與MQTT之間的比較:
比較的基礎 | AMQP | MQTT |
---|---|---|
定義 | AMQP已擴展為高級消息隊列協議。AMQP提供了更豐富的消息傳遞范圍。 | MQTT被定義為消息隊列遙測傳輸。它提供了一種簡單的消息排隊服務方式,並且主要在嵌入式系統中實現。 |
背景 | 金融機構將AMQP開發為開放源代碼和客戶驅動的隊列。在沒有任何定制的情況下,它在市場上日趨完善。 | MQTT主要由供應商驅動,由IBM開發,具有很高的實施成本。 |
協議設計 | AMQP使用TCP進行消息的異步傳輸,而與OS,硬件或編程語言的選擇無關。它提供了具有完整生命力的消息傳遞服務。AMQP在各方內部對網絡用戶和基礎結構資源的各種控制下進行操作。 | 與AMQP相似,MQTT使用TCP來以獨立於任何屬性的異步方法共享消息。它是專門為在網絡的最小帶寬上運行的小型設備而設計的。 MQTT認為復雜的參與者是由附近的私有基礎結構管理的。 |
優化框架 | 它是在數據框架的基礎上進行高級優化的,該框架具有一種緩沖方法,可以提高服務器的性能。 | 它也基於有線(wire)框架,該框架使用類似流的方法來執行最小存儲設備的幀。 它不允許傳輸批量消息。 |
消息服務 | AMQP應用於五種不同的屬性,例如發布者-訂閱者不受影響的生存時間,只要它需要保留在隊列中並且在沒有使用隊列的情況下保持靜止即可。它支持各種消息循環,經典或傳統消息隊列,組合以及保存和轉發。它執行元數據消息以幫助冪等消息和消息分組。 | 它基於發布和訂閱內容的消息傳遞,並且是高度瞬態的。它主要用於主動路由因此鏈接的訂戶和發布者。它僅限於傳統的延長壽命的消息隊列中使用。 |
消息事務 | 它支持不同的確認,事務,用例以及整個消息隊列。它可以分解各種事務代碼,而這是必需的,並在存在延遲以微調性能時確認已過期。 | MQTT不支持任何類型的事務。它僅支持常規確認。 |
連接時的安全性 | AMQP與TLS和SASL統一,並具有使用該連接的特殊功能。它具有消除SASL和TLS策略並通過連續更新提高性能的能力。 | MQTT不會對連接中的任何安全問題采取措施。 |
對用戶的安全 | AMQP利用SASL方法來選擇安全性,而無需更改協議。它為同一網絡中的組件提供了不同的名稱。因此,此功能使我們能夠使用嵌套的防火牆和網守。廣播任何消息之前,它將與用戶進行身份驗證。 | MQTT需要小的用戶名和最少的密碼,並且在此趨勢期間沒有設置任何預防措施。 |
最后值隊列 | 它不支持隊列中的最后一個值。 | 它提供Retain命令並支持隊列中的最后一個值。 |
消息可靠性 | 它僅啟用火災和遺忘策略。一旦收到就無法檢索。 | 它類似於AMQP,並且數據傳遞過於可靠。 |
消息的命名空間 | 它允許以多種方式查找消息,例如節點和隊列。 | 它在消息的分層傳輸中使用“命名空間”。 |
附加的屬性 | AMQP支持對等連接,並允許整個網絡的負載平衡,並且它是多路復用的。它可以使用容器,並且主題是雙對稱的。 | MQTT提供了DNS服務器的基本要求。MQTT是不對稱的,不支持任何高級功能。 |
實現 | AMQP在少於64kb RAM的組件中實現。 | 它是開放源代碼庫中的較小協議,在小於64kb RAM的設備中實現。 |
可擴展性 | 它具有允許在特定供應商中擴展的結構點,並且同意即將推出的擴展不兼容的方式。它允許通過隔離更改層。 | MQTT需要該協議的整個新草案。 |
結論
盡管AMQP和MQTT在體系結構和協議上有很多差異,但是它們已被廣泛用於諸如物聯網之類的各種應用中。作為開放源代碼協議,AMQP和MQTT都可以根據客戶端需求和可用帶寬在所有應用程序中使用。