RESUMO
Use MQTT para dispositivos IoT com bateria limitada, redes não confiáveis ou padrões de mensagens pub-sub. Use HTTP para APIs web/móveis padrão. MQTT usa cabeçalhos de 2 bytes contra mais de 100 bytes do HTTP, tornando-o ideal para dispositivos com restrições. O Modern PetstoreAPI implementa MQTT para coleiras de rastreamento de animais de estimação e alimentadores inteligentes.
Introdução
A coleira de rastreamento do seu animal de estimação precisa enviar atualizações de localização a cada 5 minutos. Ela funciona com uma bateria tipo moeda que deveria durar 6 meses. Usando HTTP, a bateria acaba em 2 semanas. Usando MQTT, ela dura os 6 meses completos.
HTTP é padrão para APIs, mas é projetado para navegadores web, não para dispositivos IoT. MQTT (Message Queuing Telemetry Transport) foi construído para dispositivos com restrições, largura de banda limitada e redes não confiáveis.
Modern PetstoreAPI usa HTTP para aplicativos web e móveis, mas MQTT para dispositivos IoT: coleiras de rastreamento de animais de estimação, alimentadores inteligentes e monitores de saúde.
Neste guia, você aprenderá quando o MQTT supera o HTTP, verá exemplos reais do Modern PetstoreAPI e descobrirá como escolher o protocolo certo para o seu caso de uso.
O Que é MQTT?
MQTT é um protocolo de mensagens pub-sub leve projetado para IoT.
Como o MQTT Funciona
Dispositivos publicam mensagens em tópicos. Outros dispositivos se inscrevem em tópicos:
Publicador (Coleira do Animal):
Topic: pets/019b4132/location
Payload: {"lat":37.7749,"lng":-122.4194,"battery":85}
Assinante (Aplicativo Móvel):
Subscribe to: pets/019b4132/location
Receives: {"lat":37.7749,"lng":-122.4194,"battery":85}
O Broker MQTT fica no meio, roteando mensagens de publicadores para assinantes.
Principais Recursos do MQTT
1. Cabeçalhos pequenos - MQTT: 2 bytes, HTTP: 100-500 bytes
2. Conexões persistentes - MQTT mantém as conexões abertas
3. Qualidade de Serviço (QoS) - QoS 0/1/2 para garantias de entrega
4. Última Vontade - Mensagem enviada se o dispositivo se desconectar inesperadamente
5. Mensagens retidas - O Broker armazena a última mensagem para novos assinantes
Comparação MQTT vs HTTP
| Recurso | MQTT | HTTP |
|---|---|---|
| Tamanho do Cabeçalho | 2 bytes | 100-500 bytes |
| Padrão | Pub-Sub | Requisição-Resposta |
| Conexão | Persistente | Por requisição |
| Largura de Banda | Muito baixo | Maior |
| Impacto na Bateria | Mínimo | Significativo |
| Suporte do Navegador | Via WebSocket | Nativo |
Exemplo de Largura de Banda
1000 atualizações de localização por dia:
- HTTP: 420 KB diário, 12,6 MB mensal
- MQTT: 52 KB diário, 1,56 MB mensal
MQTT usa 8x menos largura de banda.
Quando o MQTT Vence
1. Dispositivos IoT com Bateria Limitada
Coleira de rastreamento de animais:
- MQTT: 6 meses de vida útil da bateria
- HTTP: 2 semanas de vida útil da bateria
Por quê: Conexão persistente, cabeçalhos pequenos, menos tempo de rádio.
2. Redes Não Confiáveis
Dispositivos IoT celulares com cobertura intermitente:
- QoS para entrega garantida
- Reconexão automática
- Persistência de sessão
3. Comunicação Muitos-para-Muitos
Cenário de alimentador inteligente de animais:
Feeder 1 → pets/019b4132/feeding
Feeder 2 → pets/019b4127/feeding
App 1 → subscribes to pets/+/feeding (todos os animais)
App 2 → subscribes to pets/019b4132/feeding (um animal)
4. Dados de Sensores em Tempo Real
Monitor de saúde do animal enviando atualizações a cada segundo:
- Conexão persistente (sem sobrecarga)
- Latência mínima
- Eficiente para atualizações de alta frequência
Quando o HTTP Vence
1. Aplicativos Web/Móveis Padrão
HTTP é universal:
- Toda linguagem possui bibliotecas HTTP
- Navegadores o suportam nativamente
- Proxies e firewalls o permitem
2. Padrões de Requisição-Resposta
Obtendo detalhes do animal:
GET /pets/019b4132
200 OK
{"name":"Fluffy","species":"CAT"}
HTTP é mais simples para requisição-resposta.
3. Requisitos de Cache
O cache HTTP funciona nativamente:
- Cache do navegador
- Cache CDN
- Cache de proxy
MQTT não possui cache.
4. APIs RESTful
Códigos de status HTTP, métodos e semântica:
- 200 OK, 404 Not Found, 201 Created
- GET, POST, PUT, DELETE
- Tratamento de erros padrão
Como o Modern PetstoreAPI Usa MQTT
Modern PetstoreAPI implementa MQTT para dispositivos IoT.
Coleiras de Rastreamento de Animais
A coleira publica a localização:
Topic: pets/019b4132/location
QoS: 1 (pelo menos uma vez)
Payload: {
"lat": 37.7749,
"lng": -122.4194,
"battery": 85,
"timestamp": "2026-03-13T10:30:00Z"
}
Aplicativo móvel se inscreve:
const mqtt = require('mqtt');
const client = mqtt.connect('mqtts://mqtt.petstoreapi.com');
client.subscribe('pets/019b4132/location');
client.on('message', (topic, message) => {
const location = JSON.parse(message);
updateMap(location.lat, location.lng);
});
Alimentadores Inteligentes
O alimentador se inscreve na programação:
Topic: pets/019b4132/feeding-schedule
Retained: true
Payload: {
"times": ["08:00", "18:00"],
"amount": 100
}
O alimentador publica eventos de alimentação:
Topic: pets/019b4132/feeding-events
Payload: {
"timestamp": "2026-03-13T08:00:15Z",
"amount": 100,
"dispensed": true
}
Monitores de Saúde
O monitor publica os sinais vitais:
Topic: pets/019b4132/health
QoS: 0 (envio único, alta frequência)
Payload: {
"heartRate": 120,
"temperature": 38.5,
"activity": "resting"
}
Testando MQTT com Apidog
Apidog suporta testes MQTT juntamente com HTTP e outros protocolos.
Testar MQTT Pub-Sub
- Conectar ao broker MQTT
- Assinar tópicos
- Publicar mensagens de teste
- Validar formato da mensagem
- Testar níveis de QoS
Simular Falhas de Rede
- Testar lógica de reconexão
- Verificar entrega QoS 1/2
- Verificar mensagens de Última Vontade
- Validar persistência de sessão
Comparar com HTTP
Teste a mesma funcionalidade com ambos os protocolos:
- Medir uso de largura de banda
- Comparar latência
- Verificar consistência dos dados
Conclusão
MQTT e HTTP servem a propósitos diferentes. Use MQTT para dispositivos IoT com recursos limitados. Use HTTP para APIs web/móveis padrão.
Modern PetstoreAPI mostra como usar ambos: HTTP para APIs voltadas ao usuário, MQTT para dispositivos IoT. O protocolo certo depende das suas restrições, não de qual é "melhor".
Teste ambos os protocolos com o Apidog para encontrar o que melhor se adapta ao seu caso de uso.
FAQ
O MQTT pode funcionar sobre HTTP?
MQTT pode rodar sobre WebSocket, que funciona sobre HTTP. Isso ajuda na travessia de firewall, mas perde alguns benefícios de eficiência do MQTT.
Quais são os níveis de QoS do MQTT?
- QoS 0: No máximo uma vez (sem confirmação)
- QoS 1: Pelo menos uma vez (confirmado, pode duplicar)
- QoS 2: Exatamente uma vez (garantido, sem duplicatas)
O MQTT é seguro?
Sim, MQTT suporta criptografia TLS (MQTTS) e autenticação por nome de usuário/senha. O Modern PetstoreAPI usa MQTTS para todos os dispositivos IoT.
Navegadores podem usar MQTT?
Navegadores podem usar MQTT sobre WebSocket. Bibliotecas como MQTT.js suportam ambientes de navegador.
Como o MQTT se compara ao WebSocket?
MQTT é um protocolo que pode rodar sobre WebSocket. WebSocket é uma camada de transporte. MQTT adiciona pub-sub, QoS e recursos específicos de IoT sobre o WebSocket.
