La versión corta

MQTT (Message Queuing Telemetry Transport) es un protocolo de mensajería ligero, basado en publicar y suscribirse, creado para dispositivos con mal enlace, poca memoria y una batería que debe durar.

Lo crearon en 1999 Andy Stanford-Clark, de IBM, y Arlen Nipper, de Arcom, para llevar por satélite la telemetría de oleoductos. Las condiciones eran implacables: el ancho de banda era caro y escaso, el enlace se caía sin parar y los dispositivos eran endebles. Esas restricciones moldearon todo el protocolo: una cabecera mínima, una única conexión de larga duración y la capacidad de sobrevivir a un corte sin perder mensajes.

Hoy MQTT es un estándar de OASIS, y la versión 3.1.1 se adoptó además como norma internacional ISO/IEC 20922. Hace mucho que superó la industria petrolera: hogares conectados, contadores, máquinas herramienta, coches y equipos médicos funcionan con él.

El sobrecoste mínimo por mensaje es de dos bytes. Una sola petición HTTP, en cambio, gasta cientos de bytes en cabeceras antes de cualquier contenido. Cuando un dispositivo informa de una temperatura cada segundo por un módem celular en pleno campo, esa diferencia decide el diseño.

Cómo funciona: publicar, suscribirse y el broker

En HTTP el cliente pregunta y el servidor responde. En MQTT nadie pregunta nada a nadie: un dispositivo publica un mensaje en un topic y todos los que están suscritos a ese topic lo reciben. El emisor no sabe quién lee, ni siquiera si alguien lee; el receptor no sabe quién envió. Lo único que los une es el nombre del topic.

En medio siempre hay un broker: un servidor que sostiene las conexiones, mantiene el árbol de suscripciones y reparte los mensajes. Sin él el modelo no funciona: el broker es lo que convierte «enviado al vacío» en «entregado a todos los que lo necesitan».

Qué hace el broker

  • Acepta y mantiene conexiones: miles a la vez, durante años sin interrupción.
  • Comprueba quién se conecta: usuario y contraseña, un certificado o un token.
  • Decide qué puede hacer cada cliente: los permisos de publicar y suscribirse se conceden por topic.
  • Compara cada mensaje publicado con el árbol de suscripciones y reparte las copias.
  • Conserva estado: últimos valores conocidos (retain), colas para clientes ausentes y confirmaciones pendientes.
  • Vigila quién sigue vivo y publica el testamento de quien desaparece.
De ahí se sigue algo que conviene tener en cuenta desde el diseño: el broker es el único sitio donde todo confluye. Es el cuello de botella, el punto único de fallo y, a la vez, el lugar ideal para observar qué hace el sistema. Trátelo como un servidor de base de datos, no como una utilidad auxiliar.

Desacoplar al emisor del receptor no es un detalle técnico, sino la esencia del modelo. Puede sustituir un sensor, añadir un segundo consumidor o acoplar una analítica al margen sin reescribir nada: todos hablan con un topic, no entre sí.

Topics y comodines

Un topic es una cadena de niveles separados por barras. No hay que registrar nada de antemano: publicar en un topic nuevo lo crea en el acto.

oficina/planta2/sala14/temperatura
oficina/planta2/sala14/humedad
oficina/planta2/sala15/temperatura

Una suscripción puede abarcar ramas enteras con dos comodines:

ComodínSignificadoEjemploQué abarca
+exactamente un niveloficina/planta2/+/temperaturala temperatura de cada sala de la segunda planta
#todo lo que hay por debajo, incluido este niveloficina/#todos los topics de la oficina

El comodín # solo es válido como último nivel: oficina/#/temperatura no es un filtro legal. Los topics distinguen mayúsculas de minúsculas, y oficina/planta2 y oficina/planta2/ son dos topics distintos.

Los topics que empiezan por $ están reservados al propio servidor, normalmente $SYS, que lleva las estadísticas del broker. Los comodines no los alcanzan: suscribirse a # no mostrará $SYS, que exige un filtro explícito.

Calidad de servicio: QoS 0, 1 y 2

MQTT permite elegir cuánto esfuerzo dedicar a entregar cada mensaje. El nivel se fija por separado al publicar y al suscribirse; el efectivo es el menor de los dos.

NivelGarantíaCómo funcionaCuándo encaja
QoS 0como mucho una vezenviar y olvidar, sin confirmacióntelemetría frecuente, donde la siguiente lectura llega un segundo después
QoS 1al menos una vezel receptor responde PUBACK; el silencio significa reenviareventos que no se pueden perder pero sí ver dos veces
QoS 2exactamente una vezuna negociación de cuatro paquetes que descarta duplicadosórdenes y facturación, donde una repetición es un defecto

El coste sube con la garantía: QoS 2 son cuatro paquetes en vez de uno, más estado en ambos extremos. Resista la tentación de «usar 2 en todas partes por si acaso»: diez mil sensores publicando cada segundo con QoS 2 cargan un broker un orden de magnitud más, sin ganar nada.

La garantía «al menos una vez» de QoS 1 significa exactamente eso: los duplicados son posibles y normales. Si reprocesar un mensaje rompe su lógica, ponga un identificador de evento en la carga útil y descarte las repeticiones en el receptor: sale más barato que QoS 2.

Retain, Last Will, sesiones y keep-alive

Retain: el último valor conocido

Un mensaje corriente solo llega a quienes estén suscritos en ese momento. Un mensaje con la marca retain lo recuerda además el broker y se lo entrega a cada nuevo suscriptor en el instante en que se suscribe. Es la respuesta estándar al eterno problema del panel que se abre vacío y sigue vacío hasta que un sensor se digna a enviar su siguiente lectura.

Un topic guarda exactamente un mensaje retenido: el último. Para borrarlo, publique una carga útil vacía en el mismo topic con la marca retain.

Last Will: un mensaje para cuando se cae el enlace

Al conectarse, un cliente puede entregar al broker un testamento: un topic, una carga útil y sus opciones. Si la conexión muere sin cortesía, sin paquete DISCONNECT, el broker publica ese mensaje en su nombre. El patrón clásico es un topic retenido device/42/status que recibe online al conectar y lleva offline como testamento. El sistema sabe siempre quién está presente, sin sondeo alguno.

Sesiones: limpias y persistentes

Una sesión limpia dura exactamente lo que la conexión: al desconectar se olvidan las suscripciones. Una persistente sobrevive al corte: el broker recuerda las suscripciones y encola los mensajes QoS 1 y 2 mientras el cliente falta, y le entrega lo acumulado a su regreso. Para un dispositivo que despierta una vez por hora, es la única forma de no perderse nada.

Keep-alive: darse cuenta de que el enlace ha muerto

Una conexión TCP rota puede parecer perfectamente viva en ambos extremos durante mucho tiempo. Por eso el cliente declara un intervalo de keep-alive y, si no tiene otra cosa que decir, envía un ping. Si no oye nada durante un intervalo y medio, el broker da al cliente por desaparecido, cierra la conexión y publica su testamento.

Las versiones: 3.1, 3.1.1 y 5.0

En la práctica aparecen tres versiones, y las diferencias no son cosméticas.

VersiónAñoEstadoQué importa
MQTT 3.12010obsoletala especificación de IBM; identificadores de cliente limitados a 23 caracteres; hoy no hay motivo para elegirla
MQTT 3.1.12014estándar de OASIS, ISO/IEC 20922la versión más extendida; la admite prácticamente todo
MQTT 5.02019estándar de OASISuna revisión a fondo: propiedades de paquete, códigos de razón, suscripciones compartidas

Aparte queda MQTT-SN, un protocolo hermano para redes sin TCP: ZigBee, enlaces de radio, UDP. No es «una versión de MQTT», sino una especificación propia; esas redes reciben una pasarela que traduce el tráfico a MQTT corriente.

Las versiones 3.1.1 y 5.0 conviven sin problema. Un broker que admite ambas las sirve en un mismo puerto, y un cliente 3.1.1 recibe sin dificultad los mensajes publicados por uno 5.0. No hace falta migrar todo de golpe: cambie los dispositivos según se actualice su firmware.

Qué aporta realmente MQTT 5.0

La versión 5 nació de molestias acumuladas en la práctica. Lo de mayor calado:

  • Códigos de razón. En 3.1.1 un rechazo parecía un socket cerrado en silencio y había que adivinar. En 5.0 el servidor dice de qué se trata: contraseña incorrecta, sin permiso para ese topic, paquete demasiado grande.
  • Propiedades de paquete. Un mensaje puede llevar metadatos: Content Type, Correlation Data, pares clave-valor propios. Antes todo eso se metía en la carga útil o en el nombre del topic.
  • Petición y respuesta. Los campos Response Topic y Correlation Data convierten el RPC corriente en un patrón de primera clase en vez de un apaño convenido.
  • Suscripciones compartidas mediante $share/grupo/filtro: varias instancias de un consumidor se reparten el flujo. Eso es reparto de carga y tolerancia a fallos en el propio protocolo.
  • Tiempos de vida de sesiones y mensajes. Session Expiry y Message Expiry permiten decir «guárdalo un día y luego olvídalo» en lugar de la elección binaria entre limpia y no limpia.
  • Control de flujo. Receive Maximum limita cuántos mensajes sin confirmar viajan a la vez, y Maximum Packet Size protege a un dispositivo pequeño de un paquete que no puede digerir.
  • Alias de topics. Un nombre largo se envía una vez y luego se sustituye por un número de dos bytes: un ahorro real en jerarquías profundas.
  • Identificadores de suscripción, No Local, Retain As Published, Retain Handling. Detalles que eliminan trampas antiguas: oír el eco de los mensajes propios, una avalancha de retenidos en cada reconexión, no saber por qué suscripción llegó un mensaje.
  • Testamento diferido. Will Delay Interval evita que un parpadeo momentáneo dispare una alarma: el testamento se publica solo si el cliente no regresa a tiempo.

La conclusión práctica: empiece los proyectos nuevos en 5.0. Las suscripciones compartidas y unos códigos de error comprensibles ahorran semanas de depuración, y no se pierde la compatibilidad con dispositivos antiguos.

MQTT frente a HTTP y las alternativas

«¿Para qué quiero MQTT si existe REST?» es una pregunta legítima. La diferencia no es de moda, sino de dirección y de coste de la conversación.

MQTTHTTP / REST
Modelopublicar y suscribirse, muchos a muchospetición y respuesta, uno a uno
Quién empiezacualquiera de los dos: el servidor puede enviar en cualquier momentosolo el cliente; el servidor calla hasta que se le pregunta
Conexiónuna sola, de larga duraciónnormalmente una nueva por petición
Sobrecostedesde 2 bytescientos de bytes de cabeceras
Enterarse de un cambiollega solosondear con un temporizador
Comportamiento ante un cortecolas, reenvíos, retain, un testamentola petición simplemente falla
Mejor entelemetría, órdenes, eventosdocumentos, archivos, integraciones, la web

El sondeo lo deja claro. Para enterarse de un evento en menos de un segundo por HTTP, mil dispositivos deben preguntar mil veces por segundo, y casi todas las respuestas serán «nada nuevo». En MQTT el evento llega solo en el instante en que ocurre y, entretanto, no consume tráfico.

Y CoAP, AMQP y WebSocket

  • CoAP es REST sobre UDP para nodos muy pequeños. Más ligero que MQTT, pero no ofrece colas ni entrega fiable sin esfuerzo.
  • AMQP es más pesado y más rico: enrutamiento elaborado, transacciones, colas de nivel empresarial. Razonable entre servidores, excesivo para un sensor.
  • WebSocket es un transporte, no una alternativa: el propio MQTT viaja sobre WebSocket para funcionar dentro de un navegador.
  • Sparkplug B no es un rival, sino una capa sobre MQTT: dicta cómo nombrar topics y codificar cargas útiles en sistemas industriales, para que software SCADA de distintos fabricantes entienda los mismos datos.
MQTT y HTTP no se sustituyen. Un sistema sano suele usar ambos: MQTT para el flujo de lecturas y órdenes, HTTP para informes, exportaciones e integración con servicios externos.

Transporte, puertos y cargas útiles

MQTT va sobre TCP y solo pide entrega fiable y ordenada. Los puertos habituales:

PuertoQué es
1883MQTT sobre TCP, sin cifrar
8883MQTT sobre TLS: el puerto estándar de una conexión segura
80 / 443MQTT sobre WebSocket: a menudo la única salida desde un navegador o a través de un cortafuegos corporativo estricto

Para el protocolo, una carga útil no es más que una secuencia de bytes. MQTT no sabe nada del contenido ni impone nada: JSON, CBOR, protobuf, un simple número o una imagen valen igual. El límite formal son 256 MB, pero en la práctica todo lo que pase de unos cientos de kilobytes corresponde a HTTP, viajando por MQTT solo un enlace.

En la práctica domina JSON: lo lee una persona, lo analiza cualquier lenguaje y resulta bastante compacto. En un enlace estrecho, un formato binario se gana su sitio, y ahí es exactamente donde ayuda la propiedad Content Type de MQTT 5.0, al declarar con honestidad qué hay dentro.

Seguridad

MQTT no cifra nada por sí mismo: en el puerto 1883 el usuario y la contraseña viajan en claro. La seguridad viene de tres capas independientes, y ninguna es opcional.

Cifrar el canal

TLS en el puerto 8883. Para dispositivos demasiado débiles para TLS, la única opción decente es mantenerlos en una red aislada y no dejar salir nada salvo a través de una pasarela.

Autenticación

Lo clásico es usuario y contraseña en el paquete CONNECT. Más estricto: certificados de cliente, con el dispositivo presentando el suyo y el broker verificando la firma. Más flexible: JWT, donde el dispositivo trae un token firmado y con caducidad, y revocar el acceso no exige tocar el broker. Los buenos brokers también saben leer cuentas de una base externa, un archivo CSV o un servicio HTTP, para que la lista de dispositivos no tenga que existir por duplicado.

Permisos por topic

La autenticación responde a «quién es usted»; la autorización, a «qué puede hacer». Las listas de control de acceso dicen qué topics puede leer un cliente y cuáles puede escribir. El ajuste correcto es denegar todo salvo lo permitido explícitamente.

El error más común en instalaciones reales es un sensor con permiso de lectura y escritura sobre #. Basta con que alguien extraiga una imagen del firmware para que un atacante vea todo el tráfico del sistema y pueda ordenar a cualquier dispositivo. Confine cada dispositivo a su propia rama: device/{id}/# y nada más.

A eso se suman límites de ritmo de publicación (para que un dispositivo enloquecido no sepulte al broker), un tamaño máximo de paquete y la higiene de red habitual: el panel del broker no pinta nada asomado a la Internet abierta.

Dónde se usa MQTT de verdad

Hogar conectado y automatización de edificios

El mayor campo por volumen. Home Assistant, Zigbee2MQTT, ESPHome y openHAB hablan a través de un broker MQTT, que además hace de argamasa entre equipos de distintos fabricantes: un enchufe, un detector de fugas y un controlador de calefacción de tres marcas cooperan a la perfección, porque cada uno se limita a escribir en su propio topic.

Industria y SCADA

Lecturas de máquina, estado de la línea, contadores de horas. El montaje clásico es una pasarela que lee Modbus u OPC UA del equipo y lo republica por MQTT, tras lo cual SCADA, un historiador y un sistema de mantenimiento predictivo lo consumen a la vez sin estorbarse. Aquí es donde Sparkplug B y las suscripciones compartidas de MQTT 5.0 se ganan su sitio.

Contadores y suministros

Contadores de agua, gas, electricidad y calor: dispositivos a batería que despiertan una vez por hora, informan de una lectura y vuelven a dormir. Aquí las sesiones persistentes y retain hacen el trabajo pesado: el servidor ve siempre el último valor aunque un contador no vaya a asomarse hasta la noche.

Transporte y telemática

Coordenadas, consumo, estado del equipo frigorífico, conducta del conductor. El enlace es una red celular que desaparece en túneles y fuera de la ciudad. La cola y el reenvío tras la reconexión convierten una conexión hecha jirones en un flujo continuo de datos.

Energía, agricultura, sanidad

Plantas solares y subestaciones, sistemas de riego y estaciones meteorológicas, monitores de pacientes y neveras de vacunas. Lo que comparten: muchos puntos finales, un enlace débil, eventos que no se pueden perder y la necesidad de enterarse de una avería al instante.

Ciudades inteligentes y logística

Alumbrado público, aparcamiento, contenedores que informan de su llenado, seguimiento de carga y temperatura de la cadena de frío. Decenas de miles de dispositivos enviando mensajes cortos y espaciados: exactamente el perfil de carga para el que se diseñó MQTT.

Diseñar los topics: decisiones que conviene tomar pronto

Su esquema de topics es la API de su sistema. Cambiarlo después duele, porque firmware y servidor han de actualizarse a la vez. Unas cuantas reglas que ahorran tiempo.

  • De lo general a lo concreto. planta/nave3/linea2/maquina7/temperatura permite suscribirse a cualquier nivel. El orden inverso vuelve inútiles los comodines.
  • Dé al identificador del dispositivo su propio nivel. Es lo que permite que una sola regla ACL confine un dispositivo a su rama.
  • Sin barra inicial. /oficina/temp crea un primer nivel vacío: legal, pero fuente duradera de confusión.
  • Solo letras latinas, cifras, guion y guion bajo. Los espacios y los caracteres +, # y $ en los nombres provocan fallos que nadie espera.
  • Nunca codifique datos cambiantes en el topic. sensor/42/temp/21.5 es un error: el valor va en la carga útil, o el broker acaba con un árbol de topics sin límite y retain deja de servir.
  • Separe estado de órdenes. Por ejemplo device/42/state para lo que informa el dispositivo y device/42/cmd para lo que se le ordena. Si no, el eco de las propias órdenes acabará realimentando la lógica.
  • Retain para el estado, no para la telemetría. Retain sirve para el «último estado conocido» y no tiene sentido para un flujo de lecturas.
Decida pronto lo del versionado. Un nivel v1 al principio del topic no cuesta nada hoy y, dentro de dos años, le permitirá desplegar un formato de carga útil nuevo sin romper un parque de dispositivos antiguos.

Elegir un broker

Hay muchos brokers, y la elección suele reducirse a un puñado de preguntas.

  • ¿Admite MQTT 5.0 por completo? La compatibilidad parcial es frecuente, y uno se entera casi siempre en el peor momento posible.
  • ¿Se ve lo que ocurre? Poder observar quién está conectado, qué topics tienen vida y qué pasa ahora mismo ahorra horas de depuración. Un broker sin panel convierte cada problema en arqueología de registros.
  • ¿Cómo se dan de alta los dispositivos? Con miles, hacerlo a mano queda descartado: hace falta una API o cuentas en una base externa.
  • ¿Sobrevive a un reinicio? Mensajes retenidos, sesiones persistentes y colas deben llegar al disco, o un reinicio planificado significará perder datos.
  • ¿Qué límites ofrece? Un dispositivo enloquecido no debe tumbar el sistema: los límites de ritmo y de volumen importan.
  • ¿Cuánto cuesta y dónde se ejecuta? Un servicio en la nube es cómodo hasta que empieza a cobrar por mensaje; un servidor propio hay que administrarlo, pero los datos siguen siendo suyos.

Para una instalación pequeña o mediana —de un hogar conectado a una planta con unos miles de puntos— suele bastar un único broker en una máquina modesta. El clustering hace falta mucho menos de lo que parece durante el diseño; más a menudo compensa enlazar dos brokers independientes con un puente que reenvíe solo los topics importantes.

ELX-MQTT Broker cubre esa lista: las dos versiones del protocolo por entero, un panel web con gráficas en vivo y flujo de mensajes, ACL por topic, una API REST para dar de alta dispositivos, estado en SQLite, límites de ritmo y puentes. Se instala con un comando en Debian y Ubuntu o con un instalador en Windows, y es gratuito y sin límite de dispositivos.

Empezar en cinco minutos

La forma más rápida de entender todo esto es levantar un broker y mirar los mensajes uno mismo. En Debian o Ubuntu son tres comandos:

sudo wget -qO /usr/share/keyrings/elx-repo.gpg https://repo.um-d.ru/elx-repo.gpg
echo "deb [signed-by=/usr/share/keyrings/elx-repo.gpg] https://repo.um-d.ru stable main" | sudo tee /etc/apt/sources.list.d/elx-repo.list
sudo apt-get update && sudo apt-get install elxmqttbroker

El panel se abre en http://su-servidor:8567. Cree un usuario y pruebe el intercambio con cualquier cliente, por ejemplo las herramientas de consola de mosquitto:

# en una ventana: suscribirse a todo lo que envía el dispositivo
mosquitto_sub -h localhost -u sensor-42 -P contrasena -t 'sensor-42/#' -v

# en otra: publicar una lectura
mosquitto_pub -h localhost -u sensor-42 -P contrasena -t 'sensor-42/temp' -m '21.5'

# lo mismo, pero recordado para los futuros suscriptores
mosquitto_pub -h localhost -u sensor-42 -P contrasena -t 'sensor-42/temp' -m '21.5' -r

A partir de ahí, juegue con la marca retain, desconecte un suscriptor y observe qué se acumula en una sesión persistente, ponga un testamento y tire del cable. Media hora de eso enseña más que cualquier artículo, este incluido.

Respuestas rápidas

¿Qué es MQTT en términos sencillos?

Es una forma de que los dispositivos intercambien mensajes cortos a través de un intermediario. Un dispositivo envía un mensaje a un «topic» con nombre, y todo programa suscrito a ese topic lo recibe al instante. Emisor y receptor no saben nada el uno del otro, y eso es lo que permite cambiar o añadir cualquiera de los dos por separado.

¿Para qué necesito un broker MQTT?

El broker es el servidor que mantiene las conexiones con todos los dispositivos, comprueba sus permisos, compara los mensajes publicados con las suscripciones y reparte las copias. MQTT no funciona sin él: publicar y suscribirse se encuentran dentro del broker.

¿En qué se diferencia MQTT 5.0 de 3.1.1?

Sobre todo: códigos de razón comprensibles en lugar de una conexión cerrada en silencio, propiedades de paquete que llevan metadatos, petición y respuesta como patrón de primera clase, suscripciones compartidas para repartir carga entre consumidores, tiempos de vida controlables de sesiones y mensajes, control de flujo y alias de topics que ahorran ancho de banda.

¿Conviene pasar a MQTT 5.0?

Para proyectos nuevos, sí: las ventajas son reales y se conserva la compatibilidad. Un sistema 3.1.1 existente no necesita migración urgente: ambas versiones funcionan a la vez en el mismo broker, así que los dispositivos pueden pasarse poco a poco según se actualice su firmware.

¿Qué QoS debo usar?

QoS 0 para telemetría frecuente donde perder una lectura da igual. QoS 1 para eventos que no se pueden perder, siempre que el receptor sepa descartar duplicados. QoS 2 solo para órdenes y facturación, donde reprocesar es inaceptable. Poner QoS 2 en todas partes «por si acaso» es la forma más fácil de sobrecargar un broker.

¿Qué significa retain en MQTT?

Es una marca que indica al broker que recuerde un mensaje y lo entregue a cada nuevo suscriptor en el momento de suscribirse. Por topic se conserva solo el último de esos mensajes. Es la respuesta estándar a «muestra el estado actual ya, en vez de esperar a la siguiente actualización del sensor». Se borra publicando una carga útil vacía con la misma marca.

¿Qué es un Last Will?

Un mensaje que el cliente entrega al broker al conectarse y que el broker publica en su nombre si la conexión muere sin una desconexión limpia. Suele usarse para marcar un dispositivo como fuera de línea, de modo que el sistema se entere de la pérdida sin sondeos.

¿Es seguro MQTT?

El protocolo no cifra nada por sí mismo: en el puerto 1883 la contraseña viaja en claro. La seguridad viene de TLS en el puerto 8883, de la autenticación por contraseña, certificado o JWT, y de listas de acceso por topic que funcionan denegando todo lo que no esté permitido explícitamente.

¿Cuántos dispositivos aguanta un broker?

Depende del broker y de la carga, pero como orientación: un único proceso en un servidor corriente sostiene con holgura decenas de miles de conexiones simultáneas con telemetría típica. El límite no suele ser el número de dispositivos, sino el ritmo de mensajes y el QoS exigido.

¿Funciona MQTT en un navegador?

Sí, mediante MQTT sobre WebSocket. Los navegadores no pueden abrir conexiones TCP arbitrarias, así que el protocolo se envuelve en un WebSocket, lo que permite a un panel web suscribirse a topics directamente, sin servidor intermedio.

¿Qué significan + y # en los topics?

Son comodines de suscripción. El + sustituye exactamente un nivel del topic; el # cubre todos los niveles restantes y solo vale al final de un filtro. No se puede publicar en un topic con comodines: sirven únicamente para suscribirse.

¿Por qué MQTT es mejor que HTTP para el internet de las cosas?

No necesita sondeo: el mensaje llega solo cuando ocurre el evento. El sobrecoste parte de dos bytes en lugar de cientos, la conexión es única y duradera, y las colas, los reenvíos y retain llevan al sistema a través de un corte sin perder datos. Para informes, archivos e integraciones, HTTP sigue siendo la mejor herramienta.