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
Inicie sesión en el Portal de Azure.
Seleccione el vínculo para iniciar Cloud Shell.
Cambie a Bash.
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.
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.
Pasos siguientes
Para obtener ejemplos de código, vaya a este repositorio de GitHub.