Comparatif des solutions de message queuing pour l'IoT
Auteur
Elie TerrienLes solutions de message queuing sont des outils permettant de faire communiquer des applications entre elles. Elles sont utilisées dans de nombreux domaines, notamment dans l'IoT, pour faire communiquer des capteurs avec des applications de traitement de données.
Ces solutions permettent de faire communiquer des applications de manière asynchrone, c'est-à-dire que l'application qui envoie le message n'attend pas de réponse de la part de l'application qui reçoit le message. Cela permet de désynchroniser les applications, et de ne pas bloquer l'application qui envoie le message. Les messages sont envoyés dans des files d'attente (queues), et sont traités par les applications qui les reçoivent dans l'ordre dans lequel ils ont été envoyés.
Les solutions de message queuing sont des outils très puissants, mais qui peuvent être difficiles à appréhender.
Ce document a pour but de présenter les solutions de message queuing les plus utilisées dans l'IoT, et de les comparer entre elles.
Concepts de base des solutions de message queuing
Le concept de base des solutions MQTT est le suivant : le producer envoie un message au broker, qui le stocke dans une queue. Ensuite, le consumer récupère le message dans la queue et le traite.
ConsumerBrokerProducerConsumerBrokerProducerMessageMessage
Les messages
Les messages sont les données envoyées par les applications au broker de message. Ils peuvent être binaires ou structurés en JSON, XML, etc.
Les queues
Les queues sont des files d'attente dans lesquelles les messages sont envoyés. En règle générale, les queues fonctionnent comme des piles FIFO (First In First Out), c'est-à-dire que les messages sont traités dans l'ordre dans lequel ils ont été envoyés.
Le producer
Le producer est l'application qui envoie les messages au broker. Il peut y avoir plusieurs producers pour une même queue.
Le consumer
Le consumer est l'application qui va traiter les messages dans la queue.
Solutions de message queuing
RabbitMQ
RabbitMQ est un broker de message open source, écrit en Erlang. Il permet de s'assurer que les messages arrivent à destination, et de les stocker dans des queues.
Mosquitto
Mosquitto est un broker de message open source, écrit en C. Il est très utilisé dans l'IoT car il est très léger et consomme peu de ressources.
Redis
Redis est un système de gestion de base de données open source, écrit en C. Les données sont directement stockées dans la RAM, ce qui permet d'avoir des réponses très rapides. Redis n'est pas seulement une base de données, c'est aussi un broker de message.
Redis dispose notamment d'un module de message queuing en Python RedisMQ ou dans d'autres langages.