es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Asegurando que los mensajes MQTT siempre sean enviados, incluso cuando el broker esté inactivo.

Tengo una aplicación en la que envío mensajes MQTT a una plataforma de IoT, la plataforma de IoT tiene su propio broker. El problema surgió cuando el broker dejó de funcionar durante 2-3 días, con lo cual perdí datos equivalentes a esos 2-3 días.

Me preguntaba si existe alguna manera de asegurarse de que todos los puntos de datos se almacenen y luego se envíen cuando el broker vuelva en línea y en orden. He estado probando esto con Mosquitto, pero no logro que funcione.

¿Es cuestión de utilizar Quality of Service (QoS)? ¿Funciona esto incluso cuando el broker está caído o necesita comunicarse con el broker? ¿O debo utilizar persistencia o retención?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en MQTT e IoT, sugeriría que el nivel de QoS es el factor clave para garantizar que todos los puntos de datos se almacenen y envíen en orden una vez que el broker vuelva a estar en línea. El uso del nivel de QoS 2 (exactamente una vez) garantizaría que el mensaje se entregue una vez y solo una vez, incluso en caso de interrupciones de red o tiempo de inactividad del broker. Sin embargo, es importante tener en cuenta que el nivel de QoS 2 puede resultar en una mayor latencia y aumento del tráfico de red.

    La persistencia y la retención también se pueden utilizar para garantizar la durabilidad y la disponibilidad de los datos. Al habilitar la persistencia, Mosquitto almacenará los mensajes en disco y los retransmitirá al broker una vez que vuelva a estar en línea. Por otro lado, la bandera de retención instruirá al broker a mantener el último mensaje enviado por el publicador para cada tema. Esto significa que el suscriptor recibirá el último mensaje publicado incluso si hay una interrupción de la red o un tiempo de inactividad del broker.

    En resumen, el uso del nivel de QoS 2 con persistencia y retención garantizará que todos los puntos de datos se almacenen y envíen correctamente, y el suscriptor recibirá el último mensaje publicado incluso en caso de tiempo de inactividad del broker.

Comments are closed.