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)
A configuração do LWT é feita durante o envio do pacote CONNECT, onde o cliente especifica:
- O tópico onde a mensagem será publicada
- O conteúdo da mensagem
- O nível de QoS e a flag de retenção, se necessário
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.