Repository navigation
mqtt confiabilidade
Important
Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.
Nível: intermediário
Em uma frase: escolha o QoS pelo que custa perder ou repetir uma mensagem; o cliente e o broker do RAL cumprem a promessa mesmo com a conexão caindo no meio.
| QoS | promete | custa |
|---|---|---|
| 0 | no máximo uma vez: pode perder | nada |
| 1 | pelo menos uma vez: pode repetir | uma confirmação |
| 2 | exatamente uma vez | duas idas e voltas |
Para a promessa valer além de uma conexão:
-
CleanStartFalse eSessionExpirymaior que o tempo que você pode ficar fora; -
SessionStoreem arquivo (mskFile) dos dois lados, se o programa pode ser fechado no meio: o cliente guarda o que mandou e não foi confirmado, o broker do RAL guarda filas e retidas num diário; -
AckModeamAfterHandler(padrão): o cliente só confirma depois do seuOnMessage, então um programa que morre no tratador recebe de novo.
O cliente e o broker do RAL começam cada conexão mandando pouco e aumentam, e depois de conexões que duraram pouco começam menores. Num enlace que corta a conexão depois de poucas centenas de bytes isso evita entregar as mesmas mensagens sem fim.
Com outros brokers, ponha ReceiveMaximum pequeno (10) no cliente que assina: o
Mosquitto 2 reenvia, a cada reconexão, tudo o que já tinha em trânsito, além do limite
que a nova conexão anuncia.
No MQTT-SN, cada pedido é reenviado a cada RetryInterval até RetryCount vezes; num
rádio que perde muito, aumente os dois, no cliente e no gateway.
| sintoma | causa |
|---|---|
| a mesma mensagem duas vezes com QoS 1 | é a promessa do QoS 1 |
| mensagens perdidas ao reiniciar |
SessionStore em memória, ou CleanStart True |
| a fila do broker some |
SessionExpiry 0, ou o broker com MaxSessionExpiry menor |
Começar
Servidor
- Rotas e parâmetros
- Rotas avançadas: tipos, grupos, versões 🚧
- Ler o pedido e responder
- Resposta em fluxo 🚧
- Plugins 🚧
- Autenticação
- Banco de dados (DBWare)
- Servir site e arquivos
- Swagger e Postman
- Servidor SOAP 🚧
- HTTPS
- Criptografia ponto a ponto
- Segurança para produção
- Colocar no ar
- Desempenho
MQTT 🚧
- O que é e quando usar 🚧
- Cliente MQTT 🚧
- Broker MQTT 🚧
- MQTT-SN 🚧
- Ponte REST 🚧
- Segurança 🚧
- Rede ruim 🚧
Cliente
Motores
Avançado
Ajuda
- Problemas comuns
- Atualizar o Indy
- Várias versões do Delphi
- Vídeos e guias
- Módulos de terceiros
- Licenças
- Contribuir
- Roadmap e changelog
🚧 = em desenvolvimento, pode mudar