Protocolo MQTT

6. Retained Messages e Last Will

6.1 Mensagens Retidas

No MQTT, uma mensagem retida (retained message) é uma mensagem especial que permanece registrada no broker mesmo após ter sido entregue aos clientes conectados no momento da publicação. Isso garante que novos assinantes de um tópico recebam imediatamente a última mensagem publicada, sem que o publicador precise reenviá-la.

Essa funcionalidade é útil para tópicos de estado, como sensores que enviam leituras periódicas. Assim, quando um novo cliente assina um tópico, ele recebe a última leitura sem depender de uma nova publicação.

6.2 Persistência e atualização

Cada tópico pode manter apenas uma única mensagem retida. Quando uma nova mensagem com a flag de retenção é publicada, ela substitui a anterior. Caso uma mensagem com o campo de payload vazio seja publicada como retida, o broker remove a retenção daquele tópico.

6.3 Last Will and Testament (LWT)

O Last Will and Testament (LWT) é um recurso do MQTT que permite ao cliente definir uma mensagem "de despedida" que será publicada pelo broker caso a conexão do cliente se encerre de forma inesperada.

A configuração do LWT é feita durante o envio do pacote CONNECT, onde o cliente especifica:

O LWT é particularmente útil em aplicações que dependem do estado de presença ou conectividade de dispositivos, como painéis de status, alarmes e serviços críticos que precisam saber se um componente caiu.

Caso o cliente se desconecte corretamente (enviando um DISCONNECT), a mensagem LWT não será enviada.