Compartir a través de


Tutorial: Uso de temas de espacio de nombres para enrutar mensajes MQTT a Azure Event Hubs (CLI de Azure)

En este tutorial, aprenderá a usar un tema de espacio de nombres para enrutar datos de clientes MQTT a Azure Event Hubs. Los pasos generales son los siguientes:

Requisitos previos

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
  • Si no está familiarizado con Event Grid, lea la Introducción a Event Grid antes de iniciar este tutorial.
  • Registre el proveedor de recursos de Event Grid según los pasos descritos en Registro del proveedor de recursos de Event Grid.
  • Asegúrese de que el puerto 8883 está abierto en el firewall. En el ejemplo de este tutorial se usa el protocolo MQTT, que se comunica mediante el puerto 8883. Este puerto puede estar bloqueado en algunos entornos de red corporativos y educativos.

Iniciar Cloud Shell

  1. Inicie sesión en el Portal de Azure.

  2. Seleccione el vínculo para iniciar Cloud Shell.

  3. Cambie a Bash.

    Captura de pantalla que muestra Azure Portal con Cloud Shell abierto y Bash seleccionado.

Creación de un espacio de nombres y un tema de Event Grid

Para crear un espacio de nombres de Event Grid y un tema en el espacio de nombres, copie el siguiente script en un editor, reemplace los marcadores de posición por valores reales y ejecute los comandos.

Marcador Comentarios
RESOURCEGROUPNAME Especifique un nombre para el grupo de recursos que se vaya a crear.
EVENTGRIDNAMESPACENAME Especifique el nombre del espacio de nombres de Event Grid.
REGION Especifique la ubicación en la que desea crear los recursos.
NAMESPACETOPICNAME Especifique un nombre para el tema del espacio de nombres.
rgName="RESOURCEGROUPNAME"
nsName="EVENTGRIDNAMESPACENAME"
location="REGION"
nsTopicName="NAMESPACETOPICNAME"

az group create -n $rgName -l $location
az eventgrid namespace create -g $rgName -n $nsName -l $location --topic-spaces-configuration "{state:Enabled}" --identity "{type:SystemAssigned}"
az eventgrid namespace topic create -g $rgName --name $nsTopicName --namespace-name $nsName

Creación de un espacio de nombres de Event Hubs y un centro de eventos

Para crear un espacio de nombres de Event Hubs y un centro de eventos en el espacio de nombres, reemplace los marcadores de posición por valores reales y ejecute los comandos siguientes. Este centro de eventos se usa como controlador de eventos en la suscripción de eventos que se crea en este tutorial.

Marcador Comentarios
EVENTHUBSNAMESPACENAME Especifique un nombre para el espacio de nombres de Event Hubs que se vaya a crear.
EVENTHUBNAME Especifique el nombre de la instancia de Event Hubs (centro de eventos) que se vaya a crear en el espacio de nombres de Event Hubs.
ehubNsName="EVENTHUBSNAMESPACENAME`"
ehubName="EVENTHUBNAME"

az eventhubs namespace create --resource-group $rgName --name $ehubNsName
az eventhubs eventhub create --resource-group $rgName --namespace-name $ehubNsName --name $ehubName

Asigne al espacio de nombres de Event Grid el acceso para enviar eventos al centro de eventos

Ejecute el comando siguiente para agregar la entidad de servicio del espacio de nombres de Event Grid al rol Remitente de datos de Azure Event Hubs en el espacio de nombres de Event Hubs. Permite que el espacio de nombres y los recursos de Event Grid envíen eventos al centro de eventos en el espacio de nombres de Event Hubs.

egNamespaceServicePrincipalObjectID=$(az ad sp list --display-name $nsName --query [].id -o tsv)
namespaceresourceid=$(az eventhubs namespace show -n $ehubNsName -g $rgName --query "{I:id}" -o tsv) 

az role assignment create --assignee $egNamespaceServicePrincipalObjectID --role "Azure Event Hubs Data Sender" --scope $namespaceresourceid

Crear una suscripción de eventos con Event Hubs como punto de conexión

Para crear una suscripción de eventos para el tema de espacio de nombres que creó anteriormente, reemplace los marcadores de posición por valores reales y ejecute los comandos siguientes. Esta suscripción está configurada para usar el centro de eventos como controlador de eventos.

Marcador Comentarios
EVENTSUBSCRIPTIONNAME Especifique un nombre para la suscripción de eventos para el tema del espacio de nombres.
eventSubscriptionName="EVENTSUBSCRIPTIONNAME"
eventhubresourceid=$(az eventhubs eventhub show -n $ehubName --namespace-name $ehubNsName -g $rgName --query "{I:id}" -o tsv) 

az resource create --api-version 2023-06-01-preview --resource-group $rgName --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $eventSubscriptionName --parent namespaces/$nsName/topics/$nsTopicName --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventhubresourceid\"}}}}}}"

Configuración del enrutamiento en el espacio de nombres de Event Grid

Ejecute los comandos siguientes para habilitar el enrutamiento en el espacio de nombres para enrutar mensajes o eventos al tema del espacio de nombres que creó anteriormente. La suscripción de eventos de ese tema de espacio de nombres reenvía esos eventos al centro de eventos configurado como controlador de eventos.

routeTopicResourceId=$(az eventgrid namespace topic show -g $rgName --namespace-name $nsName -n $nsTopicName --query "{I:id}" -o tsv) 
az eventgrid namespace create -g $rgName -n $nsName --topic-spaces-configuration "{state:Enabled,'routeTopicResourceId':$routeTopicResourceId}"

Crear cliente, espacio temático y enlaces de permisos

Ahora, cree un cliente para enviar algunos mensajes para realizar pruebas. En este paso, creará un cliente, un espacio de temas con un tema y enlaces de publicador y suscriptor.

Para obtener instrucciones detalladas, consulte Inicio rápido: Publicación y suscripción a mensajes MQTT en un espacio de nombres de Event Grid con la CLI de Azure.

Marcador Comentarios
CLIENTNAME Especifique un nombre para el cliente que envíe algunos mensajes de prueba.
CERTIFICATETHUMBPRINT Huella digital del certificado del cliente. Consulte el inicio rápido anterior para obtener instrucciones para crear un certificado y extraer una huella digital. Use la misma huella digital en la herramienta MQTTX para enviar mensajes de prueba.
TOPICSPACENAME Especifique un nombre para el espacio de temas que se va a crear.
PUBLSHERBINDINGNAME Especifique un nombre para el enlace del publicador.
SUBSCRIBERBINDINGNAME Especifique un nombre para el enlace del suscriptor.
clientName="CLIENTNAME"
clientAuthName="client1-authnID" 
clientThumbprint="CERTIFICATETHUMBPRINT"

topicSpaceName="TOPICSPACENAME"
publisherBindingName="PUBLSHERBINDINGNAME"
subscriberBindingName="SUBSCRIBERBINDINGNAME"

az eventgrid namespace client create -g $rgName --namespace-name $nsName -n $clientName --authentication-name $clientAuthName --client-certificate-authentication "{validationScheme:ThumbprintMatch,allowed-thumbprints:[$clientThumbprint]}"

az eventgrid namespace topic-space create -g $rgName --namespace-name $nsName -n $topicSpaceName --topic-templates ['contosotopics/topic1']

az eventgrid namespace permission-binding create -g $rgName --namespace-name $nsName -n $publisherBindingName --client-group-name '$all' --permission publisher --topic-space-name $topicSpaceName

az eventgrid namespace permission-binding create -g $rgName --namespace-name $nsName -n $subscriberBindingName --client-group-name '$all' --permission subscriber --topic-space-name $topicSpaceName

Envío de mensajes mediante MQTTX

Use MQTTX para enviar algunos mensajes de prueba. Para obtener instrucciones paso a paso, consulte el inicio rápido: Publicar y suscribirse en un tema de MQTT.

Compruebe que el centro de eventos recibió esos mensajes en la página Información general del espacio de nombres de Event Hubs.

Captura de pantalla que muestra la página Información general del centro de eventos con el recuento de mensajes entrantes.

Visualizar mensajes MQTT enrutados en Event Hubs mediante una consulta de Stream Analytics

Vaya a la instancia de Event Hubs (centro de eventos) dentro de la suscripción de eventos en Azure Portal. Procesamiento de datos del centro de eventos mediante Stream Analytics. Para obtener más información, consulte Procesamiento de datos de Azure Event Hubs mediante Stream Analytics: Azure Event Hubs | Microsoft Learn. Puede ver los mensajes MQTT en la consulta.

Captura de pantalla que muestra los datos de mensajes MQTT en Event Hubs mediante la herramienta de consulta de Stream Analytics.

Pasos siguientes

Para obtener ejemplos de código, vaya a este repositorio de GitHub.