Fundamentos de MQTT

Glossário MQTT: 60 Termos que Todo Desenvolvedor IoT Deve Conhecer

De ACL a Will Delay Interval, este glossário MQTT define 60 termos de protocolo, broker e Sparkplug B em linguagem simples, com exemplos que você pode testar no broker.connectmq.com.

Ilustração de um glossário MQTT em forma de livro de referência aberto com árvores de tópicos, selos de QoS e ícones de broker
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

Este glossário MQTT define os 60 termos que você vai encontrar em especificações, documentação de brokers e APIs de bibliotecas cliente, de ACL a Will Delay Interval. Cada verbete traz uma definição curta e em linguagem simples, com indicação de um artigo mais aprofundado quando existe, para que você consiga decifrar qualquer conversa sobre MQTT e saiba onde ler mais.

Como usar este glossário MQTT

Os termos estão agrupados em ordem alfabética, mantendo os nomes originais em inglês usados nas especificações. Quando um termo se aplica apenas ao MQTT 5.0, ele aparece marcado com "(MQTT 5)". Os exemplos usam o servidor MQTT público (gratuito) em broker.connectmq.com e tópicos sob um prefixo como connectmq/demo/ab12/. Tudo o que for publicado ali pode ser lido por qualquer pessoa, então mantenha os dados de teste inofensivos. Se você está começando do zero no protocolo, o tutorial completo de MQTT é um ponto de partida melhor; volte aqui quando algum termo deixar você em dúvida.

Glossário MQTT: A a C

ACL (Access Control List, lista de controle de acesso). Regras em um broker que definem quais clientes podem publicar ou assinar quais tópicos. A implementação varia de broker para broker.

Authentication (autenticação). Provar a identidade de um cliente ao broker, geralmente com usuário e senha no pacote CONNECT, um certificado de cliente ou um token.

Authorization (autorização). Decidir o que um cliente autenticado tem permissão para fazer. É diferente de autenticação, embora os dois sejam frequentemente confundidos.

AUTH packet (MQTT 5). Um pacote de controle para trocas de autenticação estendida, como mecanismos de desafio/resposta.

Bridge (ponte). Um vínculo que faz um broker agir como cliente de outro para que tópicos selecionados fluam entre eles. Veja bridge MQTT.

Broker. O servidor que recebe todas as mensagens publicadas e as roteia para os assinantes correspondentes. Nosso artigo sobre o que um broker MQTT faz vai mais a fundo.

Clean Session (MQTT 3.1.1). Uma flag do CONNECT. Quando é true, o broker descarta qualquer estado de sessão anterior daquele client ID; quando é false, o estado é mantido.

Clean Start (MQTT 5). O substituto da Clean Session no MQTT 5. Controla apenas se uma sessão existente é reutilizada; quanto tempo a sessão dura é definido separadamente pelo Session Expiry Interval.

Client (cliente). Qualquer programa ou dispositivo que se conecta a um broker, seja para publicar, assinar ou ambos.

Client ID. O identificador que um cliente envia no CONNECT. O broker o usa para localizar a sessão, por isso ele deve ser único por conexão. Nos brokers privados do ConnectMQ, os client IDs são vinculados às credenciais emitidas.

Control packet (pacote de controle). Um dos tipos fixos de mensagem MQTT, como CONNECT, PUBLISH ou SUBSCRIBE.

Correlation Data (MQTT 5). Bytes que um solicitante anexa a uma mensagem para conseguir associar a resposta que volta.

B de Birth: termos do Sparkplug

Birth certificate (Sparkplug). Mensagens NBIRTH e DBIRTH que anunciam um nó ou dispositivo e a lista completa de suas métricas quando ele fica online.

Death certificate (Sparkplug). Mensagens NDEATH e DDEATH que marcam um nó ou dispositivo como offline; a NDEATH normalmente é registrada como o Will do MQTT.

Edge of Network (EoN) node (Sparkplug). Um gateway que publica dados Sparkplug em nome dos dispositivos que estão atrás dele.

Host application (Sparkplug). O consumidor principal, muitas vezes um SCADA, que acompanha o estado dos nós e pode enviar comandos.

Sparkplug B. Uma especificação da Eclipse que define estrutura de tópicos, payloads Protobuf e gerenciamento de estado sobre o MQTT. Leia Sparkplug B e Unified Namespace para ter o quadro completo.

Glossário MQTT: D a M

DUP flag. Ativada em um PUBLISH que está sendo reenviado porque a confirmação original não foi recebida.

Fixed header (cabeçalho fixo). Os primeiros dois a cinco bytes de todo pacote MQTT: tipo de pacote, flags e remaining length.

Inflight window (janela inflight). O número de mensagens QoS 1 e QoS 2 que um cliente ou broker enviou, mas cuja confirmação ainda não recebeu.

ISA-95. Um padrão industrial para a hierarquia empresa/controle (empresa, planta, área, linha, célula), frequentemente espelhado nas árvores de tópicos MQTT.

Keep Alive. O intervalo máximo, em segundos, entre pacotes de um cliente. Se nada mais for enviado, o cliente envia PINGREQ; se o broker não ouvir nada por uma vez e meia o intervalo, fecha a conexão.

Last Will and Testament (LWT). Uma mensagem que o broker publica em nome do cliente caso ele se desconecte inesperadamente. Muito usada para status online/offline.

Maximum Packet Size (MQTT 5). Um limite que cada lado pode anunciar para o maior pacote que aceitará.

Message Expiry Interval (MQTT 5). Um tempo de vida, em segundos, após o qual uma mensagem não entregue é descartada.

MQTT. Um protocolo leve de mensagens publish/subscribe sobre TCP, padronizado pela OASIS nas versões 3.1.1 e 5.0.

MQTT-SN. MQTT for Sensor Networks, uma variante para UDP e redes de datagramas não IP que precisa de um gateway. Veja MQTT-SN explicado.

mTLS (mutual TLS, TLS mútuo). TLS em que o cliente também apresenta um certificado para que o broker possa autenticá-lo.

N a Q

Payload. Os dados da aplicação dentro de um PUBLISH. O MQTT os trata como bytes opacos; JSON, Protobuf e texto simples são todos comuns.

Payload Format Indicator (MQTT 5). Uma flag que declara se o payload é texto UTF-8 ou bytes não especificados.

Persistent session (sessão persistente). Estado de sessão (assinaturas, mensagens enfileiradas) mantido pelo broker entre desconexões.

PINGREQ / PINGRESP. Os pacotes de batimento cardíaco do keep alive.

PUBACK. Confirmação de um PUBLISH com QoS 1.

PUBREC, PUBREL, PUBCOMP. Os três pacotes adicionais do handshake de quatro etapas da QoS 2.

PUBLISH. O pacote que transporta uma mensagem de ou para o broker.

Publisher (publicador). Um cliente que envia mensagens para um tópico.

QoS (Quality of Service, qualidade de serviço). A garantia de entrega por mensagem: 0 no máximo uma vez, 1 pelo menos uma vez, 2 exatamente uma vez. Detalhes em níveis de QoS do MQTT explicados.

Quota (cota). Um limite imposto pelo broker, como número de conexões, taxa de mensagens ou tamanho de mensagem. Brokers MQTT 5 podem informar que uma cota foi excedida com o reason code 0x97.

R a S

Reason code (MQTT 5). Um status de um byte nas confirmações e no DISCONNECT que explica o sucesso ou a falha, como 0x87 Not authorized.

Receive Maximum (MQTT 5). Quantas mensagens QoS 1/2 não confirmadas um lado está disposto a processar ao mesmo tempo; uma forma de controle de fluxo.

Response Topic (MQTT 5). Um tópico indicado em uma requisição no qual quem responde deve publicar a resposta.

Retained message (mensagem retida). Uma mensagem que o broker armazena como o último valor conhecido de um tópico e entrega a cada novo assinante. Experimente: mosquitto_pub -h broker.connectmq.com -i gl-ab12 -t connectmq/demo/ab12/state -m on -r.

Session (sessão). O estado que o broker mantém para um client ID: assinaturas, mensagens inflight e mensagens enfileiradas.

Session Expiry Interval (MQTT 5). Por quantos segundos o broker mantém uma sessão após a desconexão. O servidor MQTT público permite até 30 minutos.

Shared subscription (MQTT 5). Uma assinatura no formato $share/group/topic que distribui as mensagens entre os membros de um grupo, balanceando a carga.

SUBACK. A resposta do broker ao SUBSCRIBE, concedendo uma QoS ou retornando um erro para cada filtro de tópico.

Subscriber (assinante). Um cliente que recebe mensagens dos filtros de tópico que assinou.

SUBSCRIBE / UNSUBSCRIBE. Pacotes para adicionar ou remover filtros de tópico.

Subscription identifier (MQTT 5). Um número anexado a uma assinatura e devolvido nas mensagens correspondentes, para que o cliente saiba qual assinatura causou a entrega.

$SYS topics (tópicos $SYS). Tópicos reservados pelo broker, geralmente iniciados por $SYS/, que expõem informações de status. Por exemplo, o ConnectMQ publica o estado das conexões em $SYS/broker/connection/{clientId}/state.

T a Z

TLS (Transport Layer Security). Criptografia para a conexão TCP, normalmente na porta 8883. Abordado em portas MQTT explicadas.

Topic (tópico). Uma string UTF-8 com níveis separados por /, como plant1/line2/temp, usada para rotear mensagens.

Topic alias (MQTT 5). Um inteiro pequeno que substitui um nome de tópico longo nos pacotes PUBLISH seguintes da mesma conexão, para economizar banda.

Topic filter (filtro de tópico). O padrão usado em uma assinatura, que pode conter curingas.

Topic level (nível de tópico). Um segmento entre barras. O servidor MQTT público em broker.connectmq.com permite até 8 níveis.

Unified Namespace (UNS). Uma arquitetura em que todos os dados industriais são publicados em uma única árvore hierárquica de tópicos, como fonte única da verdade.

User Properties (MQTT 5). Pares chave/valor personalizados nos cabeçalhos dos pacotes, semelhantes aos cabeçalhos HTTP.

WebSocket transport (transporte WebSocket). MQTT transportado em frames WebSocket para que navegadores possam se conectar, normalmente na 8083 (ws) ou 8084 (wss) com um caminho como /mqtt.

Wildcard (curinga). + corresponde a exatamente um nível de tópico; # corresponde a todos os níveis restantes e deve ser o último.

Will Delay Interval (MQTT 5). Segundos que o broker aguarda antes de publicar o Will, dando ao cliente a chance de se reconectar primeiro.

Tabela de referência rápida

Você ouve Significa Versão
QoS 1 Entrega pelo menos uma vez com PUBACK 3.1.1 e 5
Retained Último valor armazenado por tópico 3.1.1 e 5
LWT Mensagem enviada em desconexão inesperada 3.1.1 e 5
Clean Start Reutilizar ou descartar a sessão ao conectar 5
Session expiry Por quanto tempo o broker mantém o estado 5
$share/ Prefixo de shared subscription 5
0x97 Cota excedida 5

Coloque o vocabulário em prática

As definições se fixam quando você as vê na rede. Conecte qualquer cliente ao broker.connectmq.com na porta 1883 com um client ID único, assine connectmq/demo/<your-id>/# e experimente você mesmo mensagens retidas, um Last Will e publicações com QoS 1. Quando estiver pronto para autenticação, TLS e um namespace isolado, um broker MQTT gerenciado como o ConnectMQ suporta MQTT 3.1.1 e 5.0, então quase todos os termos acima correspondem a algo que você pode ativar.

Comece a usar o ConnectMQ

Abra app.connectmq.com, escolha o plano Serverless (Free) (sem cartão de crédito), crie um broker e copie o usuário, a senha e o client ID gerados. O cliente MQTT no navegador do ConnectMQ é a forma mais rápida de testar mensagens retidas, LWT e session expiry enquanto você aprende.

Perguntas frequentes

Qual é a diferença entre um tópico e um filtro de tópico?

Um tópico é o nome exato no qual uma mensagem é publicada. Um filtro de tópico é o padrão que um assinante usa, que pode incluir os curingas + e #.

Clean Session é o mesmo que Clean Start?

São relacionados, mas não idênticos. A Clean Session do MQTT 3.1.1 controla tanto a reutilização quanto o tempo de vida de uma sessão, enquanto o MQTT 5 divide isso em Clean Start e Session Expiry Interval.

Quais termos do glossário existem apenas no MQTT 5?

Reason codes, user properties, topic aliases, shared subscriptions, message expiry, session expiry, response topic, correlation data e o pacote AUTH são todos acréscimos do MQTT 5.

Os termos do Sparkplug fazem parte do padrão MQTT?

Não. O Sparkplug B é uma especificação separada da Eclipse que define convenções sobre o MQTT; qualquer broker compatível pode transportá-lo.

Artigos relacionados

Por que Seu Cliente MQTT Fica Desconectando (e Como Corrigir)

Loops de reconexão estão entre os problemas mais comuns do MQTT. Conheça as cinco causas habituais, de client IDs duplicados a timeouts de keep alive e pacotes grandes demais, e siga um fluxo de diagnóstico que identifica a sua.

9 min de leitura

Quem Inventou o MQTT? A História dos Oleodutos à IoT

O MQTT foi inventado em 1999 por Andy Stanford-Clark, da IBM, e Arlen Nipper, da Arcom, para monitorar oleodutos via satélite. Acompanhe sua trajetória até o open source, a OASIS, a ISO e os brokers MQTT gerenciados na nuvem de hoje.

8 min de leitura

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.