MQTT é a sigla para Message Queuing Telemetry Transport (Transporte de Telemetria de Enfileiramento de Mensagens). TI é um protocolo de mensagens leve para uso em casos em que os clientes precisam de uma pequena área de código e estão conectados a redes não confiáveis ou a redes com recursos limitados de largura de banda. TI é usado principalmente para comunicação máquina a máquina (M2M) ou para conexões do tipo Internet das Coisas.
O MQTT foi originalmente criado pelo Dr. Andy Stanford-Clark e Arlen Nipper em 1999. O objetivo original do método de comunicação era permitir que os dispositivos de monitoramento usados no setor de petróleo e gás enviassem seus dados para servidores remotos. Em muitos casos, esses dispositivos de monitoramento eram usados em locais remotos, onde seria difícil ou impossível estabelecer qualquer tipo de conexão de telefone fixo, conexão com fio ou transmissão de rádio. Naquela época, a única opção para esses casos eram as comunicações via satélite, que eram muito caras e cobradas com base na quantidade de dados utilizados. Com milhares de sensores em campo, o setor precisava de uma forma de comunicação que pudesse fornecer dados de forma confiável o suficiente para uso, usando o mínimo de largura de banda.
O MQTT foi padronizado como código aberto sob a Organização para o Avanço dos Padrões de Informações Estruturadas (OASIS) em 2013. A OASIS ainda gerencia o padrão MQTT.
Os alertas personalizados e a visualização de dados permitem que você identifique e evite rapidamente problemas de saúde e desempenho da rede.
O MQTT é executado sobre o TCP/IP usando uma topologia PUSH/SUBSCRIBE. Na arquitetura MQTT, há dois tipos de sistemas: clientes e corretores. Um intermediário é o servidor com o qual os clientes se comunicam. O intermediário recebe as comunicações dos clientes e as envia a outros clientes. Os clientes não se comunicam diretamente uns com os outros, mas se conectam ao intermediário. Cada cliente pode ser um editor, um assinante ou ambos.
O MQTT é um protocolo orientado por eventos. Não há transmissão de dados periódica ou contínua. Isso mantém a transmissão em um nível mínimo. Um cliente só publica quando há informações a serem enviadas, e um intermediário só envia informações aos assinantes quando chegam novos dados.
Outra maneira pela qual o MQTT minimiza suas transmissões é com uma construção de mensagens pequenas e bem definidas. Cada mensagem tem um cabeçalho fixo de apenas 2 bytes. Um cabeçalho opcional pode ser usado, mas aumenta o tamanho da mensagem. A carga útil da mensagem é limitada a apenas 256 MB. Três níveis diferentes de Qualidade de Serviço (QoS) permitem que os projetistas de rede escolham entre minimizar a transmissão de dados e maximizar a confiabilidade.
Para situações em que as comunicações são confiáveis, mas limitadas, a QoS 0 pode ser a melhor opção. Para situações em que as comunicações não são confiáveis, mas em que as conexões não são tão limitadas em termos de recursos, a QoS 2 seria a melhor opção. A QoS 1 oferece uma espécie de solução do melhor dos dois mundos, mas exige que o aplicativo que recebe os dados saiba como lidar com duplicatas.
Tanto na QoS 1 quanto na QoS 2, as mensagens são salvas ou enfileiradas para clientes que estão off-line e que têm uma sessão persistente estabelecida. Essas mensagens são reenviadas (de acordo com o nível de QoS apropriado) quando o cliente volta a ficar on-line.
As notificações em tempo real significam uma solução de problemas mais rápida para que você possa agir antes que ocorram problemas mais sérios.
As mensagens no MQTT são publicadas como tópicos. Os tópicos são estruturas em uma hierarquia usando o caractere de barra (/) como delimitador. Essa estrutura se assemelha à de uma árvore de diretórios em um sistema de arquivos de computador. Uma estrutura como sensors/OilandGas/Pressure/ permite que um assinante especifique que só devem ser enviados dados de clientes que publicam no tópico Pressure ou, para uma visão mais ampla, talvez todos os dados de clientes que publicam em qualquer tópico sensors/OilandGas. Os tópicos não são criados explicitamente no MQTT. Se um corretor receber dados publicados em um tópico que não existe no momento, o tópico é simplesmente criado e os clientes podem se inscrever no novo tópico.
Para manter a área de cobertura pequena, as mensagens recebidas não são armazenadas no broker, a menos que estejam marcadas com o sinalizador retido. Isso é chamado de mensagem retida. Os usuários que desejarem armazenar as mensagens recebidas precisarão armazená-las em outro lugar fora do protocolo MQTT. Há uma exceção.
Como um protocolo orientado por eventos, é possível, até mesmo provável, que um assinante receba muito poucas mensagens de um determinado tópico, mesmo durante um longo período de tempo. Na estrutura de tópicos mencionada anteriormente, talvez as mensagens para o tópico Pressão sejam enviadas somente quando um sensor detectar que a pressão excedeu um determinado valor. Supondo que o sensor que está monitorando não falhe com frequência, pode levar meses ou até anos para que um cliente publique uma mensagem nesse tópico.
Para garantir que um novo assinante receba as mensagens de um tópico, os corretores podem manter a última mensagem enviada a cada tópico. Isso é chamado de mensagem retida. Sempre que um novo cliente se inscreve em um tópico ou quando um cliente existente volta a ficar on-line, a mensagem retida é enviada aos assinantes, garantindo assim que a assinatura esteja ativa e que tenha as informações mais recentes.
Quando as comunicações não são confiáveis, é possível que um editor se desconecte da rede sem aviso. Um editor pode registrar uma mensagem a ser enviada aos assinantes caso ele se desconecte inesperadamente, o que é chamado de testamento. Essa mensagem é armazenada em cache no broker e enviada aos assinantes caso o editor se desconecte indevidamente. Normalmente, essa mensagem inclui informações que permitem que o editor desconectado seja identificado para que as ações apropriadas possam ser tomadas.
Para manter o protocolo pequeno, há apenas quatro ações possíveis em qualquer comunicação: publicar, assinar, cancelar a assinatura ou pingar.
O objetivo original do protocolo MQTT era fazer a menor e mais eficiente transmissão de dados possível por meio de linhas de comunicação caras e não confiáveis. Dessa forma, a segurança não foi uma preocupação principal durante o projeto e a implementação do MQTT.
Entretanto, há algumas opções de segurança disponíveis ao custo de mais transmissão de dados e de um espaço maior.
O PRTG é um software abrangente de monitoramento de rede e mantém o controle de toda a sua infraestrutura de TI.
Em3 de abril de 2019, a OASIS publicou o padrão oficial MQTT v5.0
Principais recursos novos do MQTT v5.0