Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cuando un flujo de datos envía mensajes a un punto de conexión de destino, como Azure Event Hubs, Microsoft Fabric Real-Time Intelligence, Kafka u otro servicio en la nube, el destino o la red podrían dejar de estar disponibles. Operaciones de IoT de Azure usa el modelo de suscripción de agente MQTT local para almacenar en búfer los mensajes y volver a intentar la entrega.
En este artículo se explica cómo los flujos de datos protegen los mensajes durante las interrupciones de destino y cómo configurar el almacenamiento en búfer de agente y la persistencia de disco para una mayor protección.
Cómo fluyen los mensajes de búfer durante las interrupciones de destino
Cuando se usa el broker MQTT local como origen en un flujo de datos, ya sea directa o indirectamente a través de activos que publican en él, el flujo de datos recibe mensajes del broker MQTT como suscriptor. El flujo de datos confirma cada mensaje de origen después de que el mensaje se procese correctamente y se entregue al destino, o después de que el mensaje se quite intencionadamente debido al filtrado, la validación del esquema o la expiración del mensaje.
Si el punto de conexión de destino no está disponible, la entrega no se puede completar. En este caso, el flujo de datos no reconoce el mensaje de origen. El broker MQTT mantiene el mensaje en la cola del suscriptor y el flujo de datos reintenta la entrega. Cuando se restaura la conectividad, el flujo de datos envía los mensajes en cola al destino y los confirma después de su entrega exitosa.
La ruta del mensaje es: editor o recurso al MQTT broker, MQTT broker al flujo de datos, y flujo de datos al punto de conexión de destino.
- El agente MQTT entrega un mensaje al flujo de datos.
- El flujo de datos envía el mensaje al punto de conexión de destino.
- Si el envío se realiza correctamente, el flujo de datos confirma el mensaje de origen y el agente lo quita de la cola del suscriptor.
- Si se produce un error en el envío, el flujo de datos no reconoce el mensaje de origen. El broker lo mantiene en la cola.
- El flujo de datos vuelve a intentar la entrega hasta que se realiza correctamente, el mensaje expira o se aplica un límite configurado.
Importante
El almacenamiento en búfer del flujo de datos está limitado. Los mensajes en cola están sujetos al perfil de memoria del agente MQTT, los límites de la cola de suscriptores, el tamaño del búfer de mensajes respaldados por disco, la configuración de persistencia y la expiración de mensajes o sesiones. Configure estas opciones para la duración máxima de interrupción y el rendimiento que debe tolerar.
Capas de configuración de protección de datos
Use las siguientes capas de configuración para controlar cómo se almacenan en búfer los mensajes y se protegen durante las interrupciones de destino.
| Nivel | Contra qué protege | Comportamiento predeterminado | Acción del cliente |
|---|---|---|---|
| Reintento de flujo de datos y confirmación aplazada | Interrupción temporal del destino o de la red | Integrado para fuentes locales de servidor MQTT y respaldadas por activos | No requiere configuración |
| Cola de suscriptores del servidor MQTT | Mensajes recibidos por una suscripción de flujo de datos, pero aún no confirmados | Almacenado en memoria | Configura el perfil de memoria y los límites de la cola del suscriptor |
| Búfer de mensajes respaldados por disco | Trabajos pendientes temporales grandes que superan la memoria disponible | Disabled | Configure el broker durante la implementación con un búfer de mensajes respaldado por disco |
| Persistencia del broker MQTT | Reinicio del broker o del pod mientras los mensajes están en cola | Deshabilitado de forma predeterminada | Habilitar la persistencia del mediador y la persistencia de la cola del suscriptor |
Flujo de datos requestDiskPersistence |
Solicitud de flujo de datos para el almacenamiento en cola persistente de suscriptores | Disabled | Habilite requestDiskPersistence en el flujo de datos o en el grafo de flujo de datos, y habilite la persistencia dinámica de la cola de suscriptores en el broker. |
| Expiración de mensajes y sesiones | Comportamiento de almacenamiento y reproducción acotado | Configurable | Establece la caducidad y los límites basándote en tu tolerancia a pérdidas y ventana de interrupción. |
La cola de suscriptores del agente MQTT local se almacena en memoria de forma predeterminada. Puede configurar el agente MQTT para usar el disco de dos maneras diferentes:
- Búfer de mensajes respaldados en disco: usa el disco como buffer de reserva cuando las colas crecen más allá de la memoria disponible. Esta configuración ayuda con acumulaciones temporales más grandes, pero no es lo mismo que la persistencia duradera en los reinicios del intermediario.
- Persistencia del agente MQTT: conserva los datos de agente seleccionados, incluidas las colas de suscriptor, en el disco para que los mensajes en cola puedan sobrevivir a los reinicios o la pérdida de energía.
Para obtener detalles de configuración del broker, consulte:
- Configurar la configuración del broker para alta disponibilidad, escalado y uso de memoria
- Configuración del comportamiento del búfer de mensajes con respaldo en disco
- Configurar la persistencia del servidor MQTT
- Configuración de las opciones de cliente MQTT del agente
Elija una configuración de búfer
Elija una configuración basada en los requisitos de duración de interrupción y durabilidad de la carga de trabajo:
- En el caso de interrupciones de red o nube transitorias breves, la cola de suscriptores en memoria predeterminada podría ser suficiente.
- Para un mayor rendimiento o interrupciones temporales más largas, configure el búfer de mensajes respaldado por disco.
- Para la protección de reinicio o pérdida de energía, habilite la persistencia del servidor MQTT y la persistencia de la cola de suscriptores, para después habilitar
requestDiskPersistenceen el flujo de datos o en el gráfico de flujo de datos. - En el caso de los entornos de almacenamiento limitados, configure los límites de la cola de suscriptores, la expiración de mensajes y la supervisión, de modo que el agente aplique los límites de cola y elimine o rechace los mensajes según la directiva.
Ejemplo: Interrupción en el destino
Supongamos que crea un flujo de datos mediante el agente MQTT local predeterminado como punto de conexión de origen y Azure Event Hubs como punto de conexión de destino. Si se pierde la conectividad entre el flujo de datos y Azure Event Hubs, el flujo de datos vuelve a intentar enviar y no reconoce los mensajes de origen. El broker MQTT pone en cola los mensajes no confirmados. Con la configuración predeterminada, la cola se almacena en memoria. Con un búfer de mensajes respaldado en disco, la cola puede volcarse al disco. Con la persistencia del agente y el flujo de datos requestDiskPersistence, los mensajes en cola pueden sobrevivir a los reinicios del agente, sujetos a los límites configurados de persistencia, expiración y almacenamiento.
Habilitación de la persistencia de disco para un flujo de datos
La persistencia del disco permite que los flujos de datos y los gráficos de flujo de datos sigan procesando el estado entre reinicios. Al habilitar esta característica, el agente MQTT conserva los datos, como los mensajes de la cola de suscriptores, en el disco. Este enfoque ayuda a asegurarse de que el origen de datos del flujo de datos no pierde los datos en cola durante las interrupciones de energía o los reinicios del agente. El agente mantiene un rendimiento óptimo porque la persistencia está configurada por flujo de datos, por lo que solo los flujos de datos que lo necesitan usan esta característica.
El flujo de datos solicita persistencia durante la suscripción mediante una propiedad de usuario MQTTv5. Esta característica solo funciona cuando:
- El flujo de datos usa el servidor MQTT o el recurso como origen.
- El agente MQTT tiene la persistencia habilitada con el modo de persistencia dinámico establecido
Enabledpara el tipo de datos, como las colas de suscriptores.
Para obtener más información sobre la configuración de persistencia del corredor MQTT, consulte Configuración de la persistencia del corredor MQTT .
La configuración acepta Enabled o Disabled.
Disabled es el valor predeterminado.
Configuración de un flujo de datos
Al crear o editar un data flow, seleccione Edit y, a continuación, seleccione Yes junto a Request data persistence.
Configuración de un gráfico de flujo de datos
Al crear o editar un gráfico de flujo de datos, seleccione Editar y, a continuación, seleccione Sí junto a Solicitar persistencia de datos.