MQTT, le pubsub des objets

Mathieu Lecarme

mlecarme@bearstech.com

https://blog.bearstech.com/

athoune pour irc, twitter, github…

Digression sur le réseau

Client-serveur

NAT

Intermediaire

PubSub

Message box

Cascade

MQTT

MQTT

Message Queue Telemetry Transport

MQTT a été initialement conçu par des chercheurs d'IBM et de Cirrus Link Solution comme un remplaçant de SNMP, simple, léger et résilient.

Il fonctionne à l'envers, on s'abonne pour recevoir des informations, plutôt que l'inefficace polling.

Les clients sont actifs, envoient et reçoivent des évènements.

Un protocole

MQTT est un protocole bien spécifié, en version 3.1, implémenté par différents clients et serveurs. Il souhaiterait devenir un standard OASIS. Certaines implémentations sont libres et massives comme RabbitMQ ou plus légères, comme Mosquitto.

Il existe MQTT-S, une sous norme spécifique aux capteurs non TCP/IP (Zigbee, par exemple).

Simple

Léger

Résilient

Testament et dernière volonté

Un message est préparé (topic, payload, qos, retain) et ne sera délivré qu'en cas de disparition brutale du client.

Rétention

Lors d'une publication, il est possible d'activer le bit retain. Les nouveaux venus recevront ce message dès leur abonnement.

Monde réel

MQTT a plus de 10 ans et est utilisé dans des contextes variés

Code

Démo

Mosquitto comme broker.

Un client Arduino avec une photorésistance et une DEL.

Un client Python et des notifications OSX.

Arduino, del, et photoresistance

Usage possible

La télémétrie n'est qu'un des messages possibles.

MQTT empiète partiellement sur AMQP, XMPP, IRC, SNMP, OSC, etcd