MQTT

MQ Telemetry Transport (MQTT) – oparty o wzorzec publikacja/subskrypcja, ekstremalnie prosty, lekki protokół transmisji danych. Przeznaczony jest do transmisji dla urządzeń niewymagających dużej przepustowości. Poprzez ograniczenie prędkości transmisji, protokół zapewnia większą niezawodność. Protokół ten idealnie sprawdza się przy połączeniach maszyna-maszyna, w internecie rzeczy (IoT), w urządzeniach mobilnych, oraz tam, gdzie wymagana jest oszczędność przepustowości, oraz energii.

Protokół MQTT został stworzony przez Andy'ego Stanforda-Clarka z firmy IBM, oraz przez Arlena Nippera z firmy Arcom (obecnie Eurotech) w 1999 r.

MQ w nazwie MQTT pochodzi od nazwy linii produktów firmy IBM (message queuing). Najnowsza wersja protokołu to MQTTv5.0.

Broker MQTT

Broker pełni rolę serwera, z którym łączą się klienci, aby za jego pośrednictwem publikować informacje. Niektóre brokery, to: Mosquitto[1], RabbitMQ[2], HiveMQ[3], IBM MessageSight[4], VerneMQ[5], EMQ X[6], ejabberd[7].

Działanie MQTT

Każdy z klientów łączy się z brokerem, a następnie subskrybuje dany temat/tematy, może również publikować informacje w danym temacie. Kiedy klient opublikuje jakieś informacje, każdy klient, który subskrybuje ten sam temat, otrzyma tę informację. Tematy nie muszą być wcześniej tworzone oraz mogą mieć dowolną nazwę.

Klienci łącząc się z brokerem MQTT używają kilku funkcji do zarządzania transmisją:

  • Connect – ustanawia połączenie z brokerem.
  • Subscribe – subskrybuje (nasłuchuje) zadany temat na brokerze
  • Publish – publikuje (wysyła) informację na podany temat, poprzez broker, do wszystkich klientów subskrybujących dany temat.
  • Unsubscribe – przestaje subskrybować dany temat.
  • Disconnect – zamyka połączenie z brokerem.

MQTT w praktyce

Z protokołu MQTT korzysta m.in. Facebook Messenger. Dzięki zastosowaniu tego protokołu w łatwy sposób możemy przenosić się podczas rozmowy z jednego urządzenia na drugie i kontynuować konwersację. Istnieje implementacja klienta protokołu na Arduino[8].

Przypisy

  1. Mosquitto. [dostęp 2021-02-06].
  2. RabbitMQ. [dostęp 2021-02-06].
  3. HiveMQ. [dostęp 2021-02-06].
  4. IBM MessageSight. [dostęp 2021-02-06].
  5. VerneMQ. [dostęp 2021-02-06].
  6. EMQ X, EMQ Technologies Co. [dostęp 2021-02-06] (ang.).
  7. ejabberd, ProcessOne [dostęp 2021-02-06] (ang.).
  8. Arduino Client for MQTT [dostęp 2021-02-06] (ang.).

Linki zewnętrzne