Uso del enrutamiento de mensajes de IoT Hub para enviar mensajes del dispositivo a la nube a servicios de Azure

El enrutamiento de mensajes le permite enviar mensajes desde los dispositivos a los servicios en la nube de forma automatizada, escalable y confiable. El enrutamiento de mensajes se puede usar para:

  • Enviar mensajes y eventos de telemetría del dispositivo al punto de conexión integrado y a los puntos de conexión personalizados. Los eventos que se pueden enrutar incluyen eventos de ciclo de vida del dispositivo, eventos de cambio de dispositivos gemelos, eventos de cambio de gemelo digital y eventos de estado de conexión del dispositivo.

  • Filtrar los datos antes de enrutarlos mediante la aplicación de consultas enriquecidas. El enrutamiento de mensajes le permite realizar consultas sobre las propiedades de los mensajes y el cuerpo del mensaje, así como las etiquetas del dispositivo gemelo y las propiedades del dispositivo gemelo. Para más información, consulte Consultas en el enrutamiento de mensajes.

IoT Hub define un formato común para todos los mensajes del dispositivo a la nube a fin de generar interoperabilidad entre protocolos. Para más información, consulte Creación y lectura de mensajes de IoT Hub.

Nota:

Algunas de las características que se mencionan en este artículo, como la mensajería de la nube al dispositivo, los dispositivos gemelos y la administración de dispositivos, solo están disponibles en el nivel estándar de IoT Hub. Para obtener más información sobre los niveles Básico y Estándar o Gratis de IoT Hub, consulte Elección del nivel adecuado de IoT Hub para la solución.

Puntos de conexión de enrutamiento

Cada centro de IoT tiene un punto de conexión de enrutamiento predeterminado llamado mensajes y eventos que es compatible con Event Hubs. También puede crear puntos de conexión personalizados que apunten a otros servicios de la suscripción de Azure.

IoT Hub admite actualmente los siguientes puntos de conexión para el enrutamiento de mensajes:

  • Punto de conexión integrado
  • Contenedores de almacenamiento
  • Colas de Service Bus
  • Temas de Service Bus
  • Event Hubs
  • Cosmos DB

Para obtener más información sobre cada uno de estos puntos de conexión, consulte Puntos de conexión de IoT Hub.

Cada mensaje se enruta a todos los puntos de conexión cuyas consultas de enrutamiento coinciden, lo que significa que un mensaje se puede enrutar a varios puntos de conexión. Sin embargo, si un mensaje coincide con varias rutas que apuntan al mismo punto de conexión, IoT Hub entrega el mensaje a ese punto de conexión solo una vez.

IoT Hub necesita acceso de escritura a estos puntos de conexión de servicio para que el enrutamiento de mensajes funcione. Si configura los puntos de conexión a través de Azure Portal, se agregan los permisos necesarios automáticamente. Si configura los puntos de conexión mediante PowerShell o la CLI de Azure, debe proporcionar el permiso de acceso de escritura.

Para aprender a crear puntos de conexión, consulte los siguientes artículos:

Asegúrese de configurar los servicios para admitir el rendimiento esperado. Por ejemplo, si usa Event Hubs como punto de conexión personalizado, debe configurar las unidades de procesamiento para ese centro de eventos de forma que pueda controlar la entrada de eventos que planea enviar mediante el enrutamiento de mensajes de IoT Hub. Del mismo modo, cuando se usa una cola de Service Bus como punto de conexión, es preciso configurar el tamaño máximo para asegurarse de que puede contener todos los datos que se introduzcan, hasta que los consumidores los extraigan. Al configurar la solución de IoT por primera vez, es posible que deba supervisar los demás puntos de conexión y realizar los ajustes necesarios para la carga real.

Si el punto de conexión personalizado tiene configuraciones de firewall, considere la posibilidad de usar excepciones propias de confianza de Microsoft.

Ruta a un punto de conexión en otra suscripción

Si el recurso de punto de conexión está en una suscripción diferente a la instancia deI centro de IoT, debe configurar el centro de IoT como un servicio de Microsoft de confianza antes de crear un punto de conexión personalizado. Cuando cree el punto de conexión personalizado, establezca el tipo de autenticación en identidad asignada por el usuario.

Para obtener más información, consulte Conectividad de salida del centro de IoT a otros recursos de Azure.

Enrutamiento de consultas

El enrutamiento de mensajes de IoT Hub proporciona una funcionalidad de consulta para filtrar los datos antes de enrutarlos a los puntos de conexión. Cada consulta de enrutamiento que configure tiene las siguientes propiedades:

Propiedad Descripción
Nombre Nombre único que identifica la consulta.
Origen El origen del flujo de datos sobre el que se debe actuar. Por ejemplo, telemetría de dispositivo.
Condition La expresión de consulta para la consulta de enrutamiento que se ejecuta en las propiedades de la aplicación de mensajes, las propiedades del sistema, el cuerpo del mensaje, las etiquetas del dispositivo gemelo y las propiedades del dispositivo gemelo para determinar si coincide con el punto de conexión.
Punto de conexión El nombre del punto de conexión donde IoT Hub envía mensajes que cumplen la consulta. Se recomienda que elija un punto de conexión en la misma región que su instancia de IoT Hub.

Un solo mensaje puede cumplir la condición en varias consultas de enrutamiento, en cuyo caso IoT Hub entrega el mensaje al punto de conexión asociado a cada consulta coincidente. IoT Hub también desduplica automáticamente la entrega de mensajes, por lo que si un mensaje coincide con varias consultas que tienen el mismo destino, solo se escribe una vez en ese destino.

Para más información, consulte Sintaxis de las consultas de enrutamiento de mensajes de IoT Hub.

Lectura de datos que se han enrutado

En los siguientes artículos obtendrá información sobre cómo leer mensajes de un punto de conexión.

Ruta de reserva

La ruta de reserva envía todos los mensajes que no cumplen las condiciones de consulta en cualquiera de las rutas existentes al punto de conexión integrado (mensajes o eventos) que sea compatible con Event Hubs. Si el enrutamiento de mensajes está habilitado, puede habilitar la funcionalidad de ruta de reserva. Una vez que se crea cualquier ruta, los datos dejan de fluir al punto de conexión integrado, a menos que se cree una ruta a ese punto de conexión. Si no hay ninguna ruta al punto de conexión integrado y está habilitada una ruta de reserva, solo se enviarán al punto de conexión integrado los mensajes que no coincidan con ninguna de las condiciones de la consulta sobre rutas. Incluso si se eliminan todas las rutas existentes, se debe habilitar la capacidad de ruta de reserva para recibir todos los datos en el punto de conexión integrado.

Puede habilitar o deshabilitar la ruta de reserva en Azure Portal en la hoja Enrutamiento de mensajes. También puede usar Azure Resource Manager para que FallbackRouteProperties use un punto de conexión personalizado para la ruta de reserva.

Eventos que no son de telemetría

Además de la telemetría del dispositivo, el enrutamiento de mensajes también habilita el envío de eventos que no son de telemetría, incluidos los siguientes:

  • Eventos de cambio de dispositivo gemelo
  • Eventos de ciclo de vida del dispositivo
  • Eventos de ciclo de vida del trabajo del dispositivo
  • Eventos de cambio de gemelo digital
  • Eventos del estado de conexión del dispositivo

Por ejemplo, si se crea una ruta con el origen de datos establecido en Eventos de cambio de dispositivo gemelo, IoT Hub envía mensajes al punto de conexión que contienen el cambio en el dispositivo gemelo. De forma similar, si se crea una ruta con el origen de datos establecido en Eventos de ciclo de vida del dispositivo, IoT Hub envía un mensaje que indica si el dispositivo o el módulo se han eliminado o creado. Para más información sobre los eventos del ciclo de vida de los dispositivos, consulte Notificaciones del ciclo de vida de dispositivos y módulos.

Al usar Azure IoT Plug and Play, un desarrollador puede crear rutas con el origen de datos establecido en Eventos de cambio de gemelo digital e IoT Hub enviará mensajes siempre que se establezca o cambie una propiedad de gemelo digital, se sustituya un gemelo digital o se produzca un evento de cambio para el dispositivo gemelo subyacente. Finalmente, si se crea una ruta con el origen de datos establecido en Device Connection State Events (Eventos de estado de conexión del dispositivo), IoT Hub enviará un mensaje que indica si el dispositivo se ha conectado o desconectado.

IoT Hub también se integra con Azure Event Grid para publicar los eventos de dispositivo con el fin de admitir integraciones en tiempo real y la automatización de flujos de trabajo basados en estos eventos. Consulte las diferencias principales entre el enrutamiento de mensajes y Event Grid para obtener información sobre la mejor opción para su escenario.

Limitaciones de los eventos de estado de conexión del dispositivo

Los eventos de estado de conexión de dispositivos están disponibles para los dispositivos que se conectan mediante el protocolo MQTT o AMQP, o mediante cualquiera de estos protocolos a través de WebSockets. Las solicitudes realizadas solo con HTTPS no desencadenarán notificaciones de estado de conexión de dispositivos. Para que IoT Hub comience a enviar eventos de estado de conexión de dispositivos, después de abrir una conexión, un dispositivo debe llamar a la operación de recepción de mensajes de nube a dispositivo o a la operación de telemetría de envío de dispositivo a nube. Fuera de los SDK de Azure IoT, en MQTT estas operaciones equivalen a las operaciones SUBSCRIBE o PUBLISH en los temas de mensajería correspondientes. Con AMQP, estas operaciones equivalen a adjuntar o transferir un mensaje en las rutas de acceso al vínculo adecuadas. Para más información, consulte los siguientes artículos.

IoT Hub no notifica cada evento individual de conexión y desconexión de los dispositivos, sino que publica el estado de conexión actual tomado en una instantánea periódica de 60 segundos. Si se recibe el mismo evento de estado de conexión con diferentes números de secuencia o eventos de estado de conexión distintos, quiere decir que se ha producido un cambio en el estado de conexión del dispositivo durante el período de 60 segundos.

Prueba de rutas

Al crear una ruta nueva o al modificar una ruta existente, debe probar la consulta de ruta con un mensaje de ejemplo. Puede probar rutas individuales o probar todas las rutas a la vez y no se enruta ningún mensaje a los puntos de conexión durante la prueba. Puede usar Azure Portal, Azure Resource Manager, Azure PowerShell y la CLI de Azure para realizar las pruebas. Los resultados ayudan a identificar si el mensaje de ejemplo coincide o no con la consulta, o si no se pudo ejecutar la prueba porque la sintaxis del mensaje de ejemplo o de la consulta son incorrectas. Para obtener más información, consulte Prueba de una ruta y Prueba de todas las rutas.

Latencia

Al enrutar mensajes de telemetría del dispositivo a la nube, aumenta ligeramente la latencia de un extremo a otro tras las creación de la primera ruta.

En la mayoría de los casos, el aumento medio de la latencia es inferior a 500 milisegundos. Sin embargo, la latencia que experimenta puede variar y puede ser mayor en función del nivel del centro de IoT y de la arquitectura de la solución. Puede supervisar la latencia con las métricas de IoT Hub Enrutamiento: latencia de mensaje para mensajes y eventos o d2c.endpoints.latency.builtIn.events. La creación o eliminación de una ruta tras la primera no afecta a la latencia de un extremo a otro.

Supervisión y solución de problemas

IoT Hub proporciona varias métricas relacionadas con el enrutamiento y los puntos de conexión para ofrecerle una visión general del mantenimiento del centro y los mensajes enviados. También puede realizar el seguimiento de los errores que se producen durante la evaluación de una consulta de enrutamiento y del estado del punto de conexión que percibe IoT Hub con la categoría rutas de los registros de recursos de IoT Hub. Para obtener más información sobre el uso de métricas y registros de recursos con IoT Hub, consulte Supervisión de Azure IoT Hub.

Puede usar la API REST Get Endpoint Health para obtener el estado de mantenimiento de los puntos de conexión.

Use la guía de solución de problemas del enrutamiento para obtener una información más detallada y soporte técnico para solucionar problemas de enrutamiento.