Porovnání implementací MQTT - Comparison of MQTT implementations - Wikipedia
MQTT (Telemetrický přenos MQ nebo Transport telemetrie pomocí služby Řízení front zpráv) je ISO standard (ISO / IEC PRF 20922)[1] publikovat-přihlásit se k odběru - protokol pro zasílání zpráv. Funguje to nad Protokol TCP / IP. Je určen pro připojení ke vzdáleným umístěním, kde je vyžadována „malá stopa kódu“ nebo je omezena šířka pásma sítě. The vzor zpráv pro publikování a odběr vyžaduje zprostředkovatel zpráv.
Všechny srovnávací kategorie používají stabilní verzi každé implementace uvedené v části přehledu. Porovnání je omezeno na funkce, které se vztahují k protokolu MQTT.
Přehled
V následující tabulce je uveden seznam knihoven i implementací MQTT spolu s obecnými informacemi o každém z nich.
Implementace | Vyvinul | Otevřený zdroj | Softwarová licence | Vlastník autorských práv | Programovací jazyk | Typ | Nejnovější stabilní vydání, datum vydání | Původ |
---|---|---|---|---|---|---|---|---|
Adafruit IO | Adafruit | Ano | Licence MIT | Adafruit | Rubín, Node.js, Krajta, Jít[2] | Klient | 2.0.0,[3] ? | NÁS |
EMQ X[4] | EMQ | Ano | Licence Apache verze 2.0 | EMQ Enterprise, Inc. | Erlang[5] | Makléř | V3.0,[6] 2019-04-03 | Čína |
flespi[7] | Gurtam | Ne | Obchodní licence | Gurtam | C | Makléř | 2018-04-05 | Bělorusko |
GridServer | GRID systém | Ano | MPL 2.0 | GRID System S.A.S | Pascal, Delphi | Makléř | 2019-09-15 | Francie |
Klient HiveMQ MQTT[8] | HiveMQ | Ano | Licence Apache verze 2.0 | HiveMQ | Jáva | Klient | 1.2.1,[9] 2020-08-09 | Německo |
Komunitní vydání HiveMQ[10] | HiveMQ | Ano | Licence Apache verze 2.0 | HiveMQ | Jáva | Makléř | 2020.6,[11] 2020-11-17 | Německo |
HiveMQ[12] | HiveMQ | Ne | Obchodní licence | HiveMQ | Jáva | Makléř | 4.4.4,[13] 2020-12-15 | Německo |
IBM WIoTP Message Gateway[14] | IBM | Ne | Obchodní licence | IBM | C | Makléř | 5.0.0.1 2019-02-29 | |
JoramMQ[15] | ScalAgent D.T. | Ne, na základě OW2 / Joram 5.16, open-source broker (LGPL) | Obchodní licence | ScalAgent D.T. | Jáva | Makléř | 1.13 2019-04-29 | Francie |
KMQTT[16] | Davide Pianca | Ano | Licence MIT | Davide Pianca | Kotlin | Makléř | 0.2.1,[17] 2020-08-15 | Itálie |
M2Mqtt[18] | Zatmění | Ano | Veřejná licence Eclipse 1.0 | Zatmění | C# | Klient | 4.3.0.0,[19] 2017-05-20 | Kanada |
Hlava stroje[20] | ClojureWerkz[21] | Ano | Creative Commons Attribution 3.0 Unported License | Alexander Petrov, Michael Klishin, tým ClojureWerkz | Clojure | Klient | 1.0.0,[20] 2017-03-05 | |
moquette[22] | Andrea Selva | Ano | Licence Apache verze 2.0 | Andrea Selva | Jáva | Makléř | 0.12.1,[23] 2019-03-03 | Itálie |
Mosquitto[24] | Zatmění | Ano | Eclipse Public License 2.0, Licence distribuce Eclipse 1.0 (BSD) | Zatmění | C | Klient a Broker | 2.0.2,[25] 2020-12-10 | Spojené království |
MQTT-C[26] | Liam Bindle | Ano | Licence MIT | Liam Bindle | C | Klient | 1.1.1,[27] 2020-02-05 | Kanada |
mqttools[28] | Erik Moqvist | Ano | Licence MIT | Erik Moqvist | Krajta | Klient a Broker | 0.34.0, 2020-01-20 | Švédsko |
net-mqtt[29] | Dustin Sallings | Ano | BSD 3-klauzule | Dustin Sallings | Haskell | Klient | 0.6.0.0, 2019-10-12 | NÁS |
Paho MQTT[30] | Zatmění | Ano | Eclipse Public License 1.0, Licence distribuce Eclipse 1.0 (BSD)[31] | Zatmění | C, C ++, C#, Jít, Jáva, JavaScript, Krajta, Rez[32] | Klient | 1.4.0 (foton),[33] 2018-06-27 | Spojené království |
PubSub +[34] | Útěcha | Ne | Obchodní licence, bezplatná verze | Útěcha | C, C ++ | Makléř | 8.13 2018-09-28 | Kanada |
Thingstream[35] | Thingstream | Ne | Obchodní licence | Thingstream | C, C ++, Jáva, JavaScript, Krajta, Jít | Klient a makléř | 3.3.0 2019-03-14[36] | Spojené království |
VerneMQ[37] | VerneMQ / Erlio | Ano | Licence Apache verze 2.0 | VerneMQ / Erlio | Erlang / OTP | Makléř | 1.9.1 2019-08-12 | Švýcarsko |
wolfMQTT[38] | wolfSSL[39] | Ano | GNU General Public License, verze 2, Komerční licence[38] | wolfSSL | C | Klient | 1.7[40] 2020-08-21 | NÁS |
eMQTT5[41] | Cyril Russo | Ano | Licence MIT | Cyril Russo | C ++ | Klient | 1.0, 2020-03-31 | Francie |
Bevywise MQTTBroker[42] | Bevywise Networks | Ne | Obchodní licence | Bevywise Networks | C, Krajta | Makléř | v1.1, 2018-10-20 | Indie |
Vazba OpenHAB MQTT[43] | OpenHAB | Ano | Veřejná licence Eclipse | OpenHAB | Jáva | Klient | 2.5.4, 2020-04-21 | Německo |
Vodní proud[44] | SimpleMatter[45] | Ne | Obchodní licence | SimpleMatter Srl | Kotlin | Makléř | 1.00.03 | Itálie |
Úplnější seznam implementací MQTT najdete na GitHub.
Podpora protokolu
Existuje několik verzí MQTT protokol aktuálně standardizovaný. Níže je uveden seznam obsahující novější verze MQTT protokol s organizací, která je standardizovala.
- MQTT-SN v1.2, standardizováno IBM.[46]
- MQTT v3.1, standardizováno Eurotech a IBM.[47]
- MQTT v3.1.1, standardizováno OÁZA.[48] [49]
- MQTT v5.0, standardizováno OÁZA.[50]
V následující tabulce jsou uvedeny verze MQTT, které každá implementace podporuje, a také seznam jejich podpory SSL / TLS a TCP. Zabezpečení poskytované společností SSL / TLS může být žádoucí v závislosti na typu přenosu odesílaného mezi zařízeními, protože MQTT přenáší zprávy jasně.[51]
Implementace | MQTT-SN v1.2 | MQTT 3.1 | MQTT 3.1.1 | MQTT 5.0 | SSL / TLS | TCP | WS / WSS |
---|---|---|---|---|---|---|---|
EMQ | Ano | Ano | Ano | Ano | Ano | Ano | Ano |
flespi | Ano | Ano | Ano[52] | Ano | Ano | ||
HiveMQ | Ano (pouze pro makléře) | Ano | Ano [53] | Ano | Ano | Ano | |
IBM WIoTP Message Gateway | Ano | Ano | Ano | Ano | Ano | Ano | |
JoramMQ | Ano | Ano | Ano | Ano | Ano | Ano | Ano |
KMQTT | Ano | Ano | Ano | Ano | |||
M2Mqtt | Ano | Ano | Ano | Ano | |||
Hlava stroje | |||||||
moquette | Ano | Ano | Ano[54] | Ano | |||
Mosquitto | Ano | Ano | Ano | Podporuje SSL / TLS na základě certifikátu a předem sdíleného klíče, obecná podpora SSL / TLS přes mosty[55] | Ano | Ano | |
MQTT-C | Ano | Ano | Ano | Ano | |||
mqttools | Ano | Ano | Ano | ||||
net-mqtt | Ano | Ano | Ano | Ano | Ano | Ano | |
Paho MQTT[30] | Ano [56] | Ano | Ano | Ano (pouze v klientské knihovně C a Java) [57] | Ano | Ano | Ano |
Solace PubSub + | Ano | Ano | Ano | Ano | |||
Thingstream | Ano | Ano | Ano | Ano | |||
VerneMQ | Ano | Ano | Ano | Ano | Ano | Ano | |
wolfMQTT | Ano | Ano | Ano | Ano | Ano | ||
eMQTT5 | Ano | Ano | Ano | ||||
Bevywise Networks | Ano | Ano | Ano | Ano | Ano | Ano | |
Vodní proud | Ano | Ano | Ano | Ano |
Nabízené úrovně kvality služby (QoS)
Z MQTT strana, QoS (Quality of Service) je popsán jako,
Kvalita služby odkazuje spíše na mechanismy prioritizace provozu a řízení rezervací zdrojů než na dosaženou kvalitu služby. Kvalita služby je schopnost poskytovat různým prioritám různým aplikacím, uživatelům nebo datovým tokům nebo zaručit určitou úroveň výkonu datovému toku.
Popis každého z nich QoS úroveň je uvedena níže.[58]
- Maximálně jednou dodávka (zapal a zapomeň)
- Alespoň jednou dodávka (potvrzená dodávka)
- Přesně jednou dodávkou (zajištěné doručení)
V následující tabulce je uvedena podpora jednotlivých úrovní QoS u každé implementace.
Implementace | 0 | 1 | 2 |
---|---|---|---|
Adafruit IO | Ano | Ano | Ne[59] |
EMQ[60] | Ano | Ano | Ano |
flespi[52] | Ano | Ano | Ano |
HiveMQ[61] | Ano | Ano | Ano |
IBM WIoTP Message Gateway | Ano | Ano | Ano |
JoramMQ | Ano | Ano | Ano |
KMQTT | Ano | Ano | Ano |
M2Mqtt[18] | Ano | Ano | Ano |
moquette[62] | Ano | Ano | Ano |
Mosquitto[63] | Ano | Ano | Ano |
MQTT-C | Ano | Ano | Ano |
mqttools | Ano | Ne | Ne |
net-mqtt | Ano | Ano | Ano |
Paho MQTT | Ano | Ano | Ano |
Solace PubSub + | Ano | Ano | Ne[64] |
Thingstream | Ano | Ano | Ano |
VerneMQ | Ano | Ano | Ano |
wolfMQTT[38] | Ano | Ano | Ano |
eMQTT5 | Ano | Ano | Ano |
Bevywise MQTTBroker | Ano | Ano | Ano |
Vodní proud | Ano | Ano | Ano |
Obavy z přenositelnosti
Problémy týkající se přenositelnosti v této části odkazují na technické podrobnosti, které mohou být rozhodujícími faktory při výběru implementace, která se má použít. Obecně by tuto tabulku měli používat ti, kdo mají více znalostí o zařízení, které budou používat.
Implementace | Požadavky na platformu | Síťové požadavky | Bezpečnost závitu | Možnost křížové kompilace | Holý kov |
---|---|---|---|---|---|
Adafruit IO | Adafruit Feather Huzzah, ESP8266, Raspberry Pi, Arduino, jakákoli platforma, která podporuje Krajta, Rubín nebo Node.js | Závisí na platformě | |||
EMQ | Linux, Unix, Operační Systém Mac, Okna, Raspberry Pi[65] | Ano | Ano | Ano | |
flespi | |||||
HiveMQ | JVM, Linux, Operační Systém Mac, Okna, Raspberry Pi | Ano | Ano | Ano | |
KMQTT | JVM, Linux, Okna, Raspberry Pi | Ano | Ano | ||
M2Mqtt | Libovolná platforma .NET (.NET Framework, .NET Compact Framework, .NET Micro Framework ), WinRT | ||||
Hlava stroje | Leiningen 2[66] | ||||
komár | C90, Linux, Unix, Operační Systém Mac, Okna, Raspberry Pi | Ano | Ano | ||
MQTT-C | ANSI C. (C89 ) Platforma agnostik (při použití v holém kovu, Linux, Operační Systém Mac, a Okna aplikace) | Zpětná volání sítě IO | Ano. Dále podporuje aplikace s jedním vláknem.[67] | Ano | Ano |
net-mqtt | GHC | Ano | Ano | Ano | |
Paho MQTT | ANSI C. (pro C klient), C ++ 11 (pro C ++ klient), JVM nebo Android (pro Jáva klient) | Pro C, C ++ klienty | Pro C, C ++ klienty | ||
wolfMQTT | C89 | Zpětná volání sítě IO | Ano | Ano | Ano |
eMQTT5 | Linux, Unix, Operační Systém Mac, Okna, ESP32, STM32 (s lwIP a MBedTLS ) C ++ 11 | Implementace zásuvky BSD | Ano | Ano | Ano |
Bevywise MQTTBroker | Linux, Unix, Operační Systém Mac, Okna, Raspberry Pi | Ano |
Obecné požadavky
V následující tabulce jsou uvedeny různé požadavky, které mohou být užitečné při rozhodování o tom, kterou implementaci použít pro zařízení.
Reference
- ^ „ISO / IEC 20922: 2016 Information technology - Message Queuing Telemetry Transport (MQTT) v3.1.1“. iso.org. Mezinárodní organizace pro normalizaci. 15. června 2016.
- ^ "Přehled | Vítejte v Adafriut IO | Adafruit Learning System". learn.adafruit.com.
- ^ „Dokumentace Adafruit IO REST API“. io.adafruit.com.
- ^ „EMQ“. emqx.io.
- ^ „EMQ X- Erlang MQTT Broker - EMQ X - Erlang MQTT Broker 3.0 dokumentace“. emqx.io. Citováno 2018-09-30.
- ^ „EMQ X ChangeLog a poznámky k verzi“. emqx.io.
- ^ „makléř flespi MQTT“. flespi.com.
- ^ „Klient HiveMQ MQTT“. hivemq.com.
- ^ „Vydání HiveMQ MQTT klienta 1.2.1“. hivemq.com.
- ^ „Komunitní vydání HiveMQ“. hivemq.com.
- ^ „HiveMQ CE 2020.6“. hivemq.com.
- ^ „HiveMQ“. hivemq.com.
- ^ „Vydán HiveMQ 4.4.4“. hivemq.com.
- ^ „Brána zpráv WIoTP“. ibm.com.
- ^ „JoramMQ“. jorammq.com.
- ^ Pianca, Davide (05.07.2020), davidepianca98 / KMQTT, vyvoláno 2020-07-06
- ^ "Vydání 0.2.0 · davidepianca98 / KMQTT". GitHub. Citováno 2020-07-06.
- ^ A b C „Eclipse Paho M2Mqtt“. eclipse.org.
- ^ „Vydání M2MQTT“. github.com.
- ^ A b "Machine Head". clojuremqtt.info.
- ^ „ClojureWerks“. clojurewerz.org.
- ^ "moquette". github.com.
- ^ „zprávy o moquette“. github.com.
- ^ "Mosquitto". mosquitto.org.
- ^ "Mosquitto ChangeLog.txt". 10. prosince 2020. Citováno 16. prosince 2020.
- ^ „MQTT-C“. liambindle.ca/MQTT-C.
- ^ „Vydání MQTT-C“. github.com.
- ^ "mqttools". github.com.
- ^ "net-mqtt: Implementace protokolu MQTT". Hackování. Citováno 2019-09-16.
- ^ A b "Paho". eclipse.org. Citováno 2020-12-16.
- ^ „Licence distribuce Eclipse - v 1.0“. eclipse.org.
- ^ „Stažení Eclipse Paho - srovnání klientů MQTT“.
- ^ „Nejnovější zprávy“. eclipse.org/projects.
- ^ „Solace PubSub +“. solace.com.
- ^ "Domov". Thingstream. Citováno 2019-01-31.
- ^ „DOCS - Notes release“. sites.google.com. Citováno 2019-06-07.
- ^ „Broker VerneMQ MQTT“. vernemq.com.
- ^ A b C d „Klientská knihovna wolfMQTT | Komunikační produkty wolfSSL Embedded Communication“. wolfSSL. Citováno 2020-12-16.
- ^ „wolfssl.com“.
- ^ "wolfMQTT seznam změn | wolfSSL vložené dokumenty SSL / TLS knihovny". wolfSSL. Citováno 2020-12-16.
- ^ „Klientská knihovna eMQTT v5.0“. github.com.
- ^ „Bevywise MQTT broker“. bevywise.com.
- ^ „Klient MQTT“. openhab.org.
- ^ "Waterstream". waterstream.io.
- ^ "SimpleMatter". simplematter.io.
- ^ Andy Stanford-Clark, Hong Linh Truong (14. listopadu 2013). „MQTT For Sensor Networks (MQTT-SN) Protocol Specification verze 1.2“ (PDF). IBM.CS1 maint: používá parametr autoři (odkaz)
- ^ „Specifikace protokolu MQTT V3.1“. public.dhe.ibm.com. 2010. Citováno 2017-12-13.
- ^ Editoval Andrew Banks a Rahul Gupta (29. října 2014). „MQTT verze 3.1.1“. OÁZA.CS1 maint: používá parametr autoři (odkaz)
- ^ Editoval Andrew Banks a Rahul Gupta (10. prosince 2015). „MQTT verze 3.1.1 Plus Errata 01“. OÁZA.CS1 maint: další text: seznam autorů (odkaz)
- ^ Editoval Andrew Banks, Ed Briggs, Ken Borgendale a Rahul Gupta (25. prosince 2017). „MQTT verze 5.0“. OÁZA.CS1 maint: více jmen: seznam autorů (odkaz) CS1 maint: další text: seznam autorů (odkaz)
- ^ „Často kladené dotazy - MQTT“. mqtt.org. Citováno 2018-01-30.
- ^ A b „Kontrolní seznam souladu s MQTT 5.0“. flespi.com.
- ^ „HiveMQ 4.1“. hivemq.com.
- ^ „Dokumentace moquette - konfigurace SSL“.
- ^ "mosquitto.conf (5)".
- ^ „Eclipse Paho - MQTT-SN Transparent Gateway“. Citováno 2020-12-16.
- ^ „Eclipse Paho 1.4.0 (Photon)“.
- ^ „IBM Knowledge Center“. www.ibm.com. Citováno 2018-01-30.
- ^ „MQTT API“. adafruit.com.
- ^ „EMQ X - Erlang MQTT Broker - EMQ 3.0 - dokumentace“. emqx.io. Citováno 2018-09-30.
- ^ https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels/
- ^ Selva, Andrea (29.01.2018), moquette: Java MQTT lightweight broker, vyvoláno 2018-02-01
- ^ "mosquitto.conf". mosquitto.org. Citováno 2017-12-15.
- ^ „Solace Documentation - Quality of Service Levels supported“.
- ^ A b C emqttd: EMQ - Erlang MQTT Broker, emqtt, 2018-09-30, vyvoláno 2018-09-30
- ^ A b machine_head: Clojure MQTT client, ClojureWerkz, 29. 11. 2017, vyvoláno 2017-12-13,
Machine Head používá Leiningen 2. Ujistěte se, že jej máte nainstalovaný, a poté spusťte testy proti podporovaným verzím Clojure pomocí ...
- ^ "MQTT-C jednovláknové aplikace". liambindle.ca/MQTT-C/group__api.html#gae3d3aafc7588ed53a90c9f66fc620a6e.
- ^ emqx.io, feng ve společnosti. „Stažení EMQ X“. emqx.io. Citováno 2018-09-30.
- ^ „Začínáme s MQTT a Clojure“. clojuremqtt.info. Citováno 2017-12-14.
- ^ "Stahování | Mosquitto". mosquitto.org. Citováno 2017-12-14.
- ^ „Solace PubSub + Cloud“. cloud.solace.com.
- ^ „wolfMQTT User Manual - 2.4 Building on Other Systems“. 2018-05-25. Citováno 2020-12-16.