Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste tutorial, você aprenderá a usar um tópico de namespace para rotear dados de clientes MQTT para Os Hubs de Eventos do Azure. Estas são as etapas de alto nível:
Pré-requisitos
- Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
- Se você não estiver familiarizado com a Grade de Eventos, leia a visão geral da Grade de Eventos antes de iniciar este tutorial.
- Registre o provedor de recursos da Grade de Eventos de acordo com as etapas em Registrar o provedor de recursos da Grade de Eventos.
- Verifique se a porta 8883 está aberta no firewall. O exemplo neste tutorial usa o protocolo MQTT, que se comunica pela porta 8883. Essa porta pode ser bloqueada em alguns ambientes de rede corporativa e educacional.
Iniciar o Cloud Shell
Faça logon no Portal do Azure.
Selecione o link para iniciar o Cloud Shell.
Alterne para Bash.
Criar um namespace e um tópico do Event Grid
Para criar um namespace da Grade de Eventos e um tópico no namespace, copie o script a seguir para um editor, substitua os espaços reservados por valores reais e execute os comandos.
| Placeholder | Comments |
|---|---|
RESOURCEGROUPNAME |
Especifique um nome para o grupo de recursos a ser criado. |
EVENTGRIDNAMESPACENAME |
Especifique o nome do namespace da Grade de Eventos. |
REGION |
Especifique o local no qual você deseja criar os recursos. |
NAMESPACETOPICNAME |
Especifique um nome para o tópico do namespace. |
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
Criar um namespace dos Hubs de Eventos e um hub de eventos
Para criar um namespace do Event Hubs e um hub de eventos dentro deste namespace, substitua os espaços reservados por valores reais e execute os comandos a seguir. Esse hub de eventos é usado como um manipulador de eventos na assinatura de evento que você cria neste tutorial.
| Placeholder | Comments |
|---|---|
EVENTHUBSNAMESPACENAME |
Especifique um nome para o namespace dos Hubs de Eventos a ser criado. |
EVENTHUBNAME |
Especifique o nome da instância dos Hubs de Eventos (hub de eventos) a ser criada no namespace dos Hubs de Eventos. |
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
Dê ao namespace da Grade de Eventos o acesso para enviar eventos para o hub de eventos
Execute o comando a seguir para adicionar a entidade de serviço do namespace da Grade de Eventos à função de Remetente de Dados de Hubs de Eventos do Azure no namespace de Hubs de Eventos. O comando permite que o namespace e os respectivos recursos da Grade de Eventos enviem eventos para o hub de eventos no namespace de Hubs de Eventos.
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
Criar uma assinatura de evento com o Event Hubs como o endpoint
Para criar uma assinatura de evento para o tópico de namespace que você criou anteriormente, substitua os espaços reservados por valores reais e execute os comandos a seguir. Esta assinatura é configurada para usar o hub de eventos como o manipulador de eventos.
| Placeholder | Comments |
|---|---|
EVENTSUBSCRIPTIONNAME |
Especifique um nome para a assinatura de eventos para o tópico do namespace. |
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\"}}}}}}"
Configurar o roteamento no namespace da Grade de Eventos
Execute os comandos a seguir para habilitar o roteamento no namespace para rotear mensagens ou eventos para o tópico de namespace criado anteriormente. A assinatura de evento nesse tópico de namespace encaminha esses eventos para o hub de eventos configurado como um manipulador 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}"
Cliente, espaço de tópico e vinculações de permissão de um cliente
Agora, crie um cliente para enviar algumas mensagens para teste. Nesta etapa, você criará um cliente, um espaço de tópico com um tópico e associações de editor e assinante.
Para obter instruções detalhadas, consulte Início Rápido: Publicar e assinar mensagens MQTT em um namespace da Grade de Eventos com a CLI do Azure.
| Placeholder | Comments |
|---|---|
CLIENTNAME |
Especifique um nome para o cliente que envia algumas mensagens de teste. |
CERTIFICATETHUMBPRINT |
Impressão digital do certificado do cliente. Consulte o início rápido acima para obter instruções para criar um certificado e extrair uma impressão digital. Use a mesma impressão digital na ferramenta MQTTX para enviar mensagens de teste. |
TOPICSPACENAME |
Especifique um nome para o espaço de tópico a ser criado. |
PUBLSHERBINDINGNAME |
Especifique um nome para a vinculação do fornecedor. |
SUBSCRIBERBINDINGNAME |
Especifique um nome para a vinculação do assinante. |
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
Enviar mensagens usando MQTTX
Use o MQTTX para enviar algumas mensagens de teste. Para obter instruções passo a passo, consulte o início rápido: Publicar e assinar um tópico MQTT.
Verifique se o hub de eventos recebeu essas mensagens na página Visão geral do namespace dos Hubs de Eventos.
Exibir mensagens MQTT roteadas nos Hubs de Eventos usando uma consulta do Stream Analytics
Navegue até a instância dos Hubs de Eventos (hub de eventos) em sua assinatura de evento no portal do Azure. Processe dados do hub de eventos usando o Stream Analytics. Para obter mais informações, consulte Processar dados dos Hubs de Eventos do Azure usando o Stream Analytics – Hubs de Eventos do Azure | Microsoft Learn. Você pode ver as mensagens MQTT na consulta.
Próximas etapas
Para obter exemplos de código, acesse este repositório do GitHub.