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.
O Event Grid permite que você roteie suas mensagens MQTT para serviços ou webhooks do Azure para processamento adicional. Ao rotear esses dados, você pode construir soluções de ponta a ponta que utilizam seus dados de IoT para análise, armazenamento e visualização.
Este artigo explica quando usar o roteamento e mostra como configurar o roteamento para um tema de namespace de Grade de Eventos ou para um tópico personalizado.
Quando usar o roteamento
Rotear as mensagens dos seus clientes para um serviço do Azure ou para seu endpoint personalizado ajuda a maximizar os benefícios desses dados. A lista a seguir descreve alguns dos muitos casos de uso desse recurso:
- Análise de dados: Extraia e analise as mensagens roteadas dos seus clientes para otimizar sua solução. Por exemplo, analise a telemetria das suas máquinas para prever quando agendar a manutenção antes que ocorram falhas, para evitar atrasos e danos adicionais.
- Aplicações sem servidor: Acione uma função sem servidor com base nas mensagens roteadas de seus clientes. Por exemplo, quando um sensor de movimento detectar movimento, envie uma notificação para a equipe de segurança para resolvê-lo.
- Visualizações de dados: Crie visualizações dos dados encaminhados de seus clientes para representá-los e compreendê-los, além de destacar tendências e valores atípicos.
Configurar roteamento
A configuração de roteamento permite que você envie todas as suas mensagens MQTT dos seus clientes para um tópico de namespace de Grade de Eventos ou para um tópico personalizado de Grade de Eventos. Depois que as mensagens estiverem no tópico, você poderá configurar uma assinatura de evento para consumir as mensagens do tópico. Use as seguintes etapas de alto nível para obter essa configuração:
- Tópico do namespace como destino de roteamento:
- Crie um tópico de namespace para Grade de Eventos onde a Grade de Eventos roteia todas as mensagens MQTT.
- Crie uma assinatura de evento do tipo push para encaminhar essas mensagens para um dos serviços do Azure suportados ou para um webhook personalizado, ou crie uma assinatura de evento do tipo fila para puxar as mensagens diretamente do tópico do namespace através da sua aplicação.
- Defina a configuração de roteamento que se refere ao tópico que você criou na primeira etapa.
- Tópico personalizado como um destino de roteamento:
- Crie um tópico personalizado para a Grade de Eventos onde a Grade de Eventos roteie todas as mensagens MQTT. Este tópico precisa atender aos requisitos de tópicos personalizados do Event Grid para roteamento.
- Crie uma assinatura de evento do Event Grid para rotear essas mensagens para um serviço Azure compatível ou um ponto de extremidade personalizado.
- Defina a configuração de roteamento que se refere ao tópico que você criou na primeira etapa.
Observação
Desabilitar o acesso público à rede no namespace faz com que o roteamento MQTT falhe.
Diferença entre tópicos de namespace e tópicos personalizados como um destino de roteamento
A tabela a seguir mostra a diferença entre tópicos de namespace e tópicos personalizados como um destino de roteamento. Para uma divisão detalhada de quais cotas e limites cada recurso da Grade de Eventos inclui, veja Cotas e limites.
| Ponto de comparação | Tópico do namespace | Tópico personalizado |
|---|---|---|
| Produtividade | Alta, até 40 MB/s (entrada) e 80 MB/s (saída) | Baixo, até 5 MB/s (entrada e saída) |
| Entrega pull | Sim | No |
| Entrega por push para Hubs de Eventos | Sim | Sim |
| Entrega por push para serviços do Azure (Funções, Webhooks, filas e tópicos do Barramento de Serviço, conexões híbridas de retransmissão e filas de armazenamento) | No | Sim |
| Retenção de mensagens | 7 dias | 1 dia |
| Requisito de atribuição de função | Não é necessário porque o corretor MQTT e o tópico do namespace estão sob o mesmo namespace | É obrigatório porque o namespace que hospeda a funcionalidade do broker MQTT e o tópico personalizado são recursos diferentes |
Requisitos para roteamento de tópicos personalizados na Grade de Eventos
O tópico personalizado Grade de Eventos que você usa para roteamento precisa cumprir os seguintes requisitos:
- Ele precisa usar o esquema CloudEvents v1.0.
- Ele precisa estar na mesma região que o namespace.
- Você precisa atribuir o papel de Remetente de Dados da Grade de Eventos para si mesmo ou para a identidade gerenciada selecionada no tópico personalizado da Grade de Eventos antes de aplicar a configuração de roteamento. Para atribuir o papel:
- No portal, vá para o recurso tópico da Grade de Eventos que você criou.
- No menu de controle de acesso (IAM ), selecione Adicionar atribuição de função.
- Na aba Função , selecione Event Grid Data Sender e depois selecione Próximo.
- Na aba Membros, selecione Selecionar membros, depois insira seu nome de usuário Microsoft Entra na caixa Selecionar que aparece (por exemplo,
user@contoso.com). - Selecione seu nome de usuário Microsoft Entra e selecione Avaliar + atribuir.
Configuração do portal do Azure
Para configurar o roteamento:
- Acesse seu namespace no portal do Azure.
- Em Roteamento, selecione Habilitar roteamento.
- Para o tipo de tópico, selecione entre o tema do espaço de nomes ou o tópico personalizado.
-
Para o Tópico, selecione o tópico que você criou onde todas as mensagens MQTT são roteadas.
- Para tópicos personalizados, a lista mostra apenas os tópicos que atendem aos requisitos de tópicos personalizados do Grade de Eventos para roteamento.
- Se você selecionar um tópico personalizado, a seção Identidade Gerenciada para Entrega aparece. Selecione uma das seguintes opções para a identidade que autentica o corretor MQTT enquanto ele entrega as mensagens MQTT ao tópico personalizado:
- Nenhum: Atribua a função de Remetente de Dados da Grade de Eventos para você mesmo no tópico personalizado.
- Identidade atribuída ao sistema: Ative a identidade atribuída ao sistema no namespace como pré-requisito e atribua o papel de Remetente de Dados da Grade de Eventos à identidade atribuída pelo sistema no tópico personalizado.
- Identidade atribuída pelo usuário: Ative a identidade atribuída pelo usuário no namespace como pré-requisito e atribua o papel de Remetente de Dados da Grade de Eventos à identidade selecionada no tópico personalizado. Se você selecionar Identidade atribuída pelo usuário, aparece um menu suspenso para que você possa selecionar a identidade.
- Selecione Aplicar.
Para obter instruções de configuração de enriquecimentos, acesse a configuração do portal de enriquecimento.
Configuração da CLI do Azure
az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --api-version 2023-06-01-preview --properties @./resources/NS.json
NS.json
{
"properties": {
"inputSchema": "CloudEventSchemaV1_0",
"topicSpacesConfiguration": {
"state": "Enabled",
"routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid topic name>",
"routingIdentityInfo": {
"type": "UserAssigned",
"userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>"
}
}
}
}
Em routingIdentityInfo, type aceita None, SystemAssigned, ou UserAssigned. Defina userAssignedIdentity apenas quando type é UserAssigned.
Para obter instruções de configuração de enriquecimentos, vá para a configuração da CLI de Enriquecimento.
Comportamento de roteamento de mensagens MQTT
Ao rotear mensagens MQTT para tópicos personalizados, a Grade de Eventos fornece entrega durável, pois tenta entregar cada mensagem pelo menos uma vez imediatamente. Se houver uma falha, o Event Grid ou tenta a entrega novamente ou descarta a mensagem destinada ao roteamento. A Grade de Eventos não garante a ordem de entrega dos eventos, portanto, os assinantes podem recebê-los fora de ordem.
A tabela a seguir descreve o comportamento do roteamento de mensagens MQTT com base em erros diferentes.
| Erro | Descrição do erro | Comportamento |
|---|---|---|
| TopicNotFoundError | O tópico personalizado configurado para receber todas as mensagens roteadas pelo MQTT foi excluído. | O Event Grid descarta a mensagem MQTT destinada ao roteamento. |
| AuthenticationError | A função Remetente de Dados da Grade de Eventos para o tópico personalizado configurado como o destino das mensagens roteadas MQTT foi excluída. | O Event Grid descarta a mensagem MQTT destinada ao roteamento. |
| Muitas Solicitações | O número de mensagens roteadas MQTT por segundo excede o limite de publicação do tópico personalizado. | A Grade de Eventos tenta rotear novamente a mensagem MQTT. |
| Erro de Serviço | Um erro inesperado do servidor por um motivo operacional. | A Grade de Eventos tenta rotear novamente a mensagem MQTT. |
Durante as repetições, a Grade de Eventos usa uma política de repetição de retirada exponencial para roteamento de mensagens MQTT. A Grade de Eventos repete a entrega usando a seguinte agenda com base no melhor esforço:
- 10 segundos
- 30 segundos
- 1 minuto
- 5 minutos
- 10 minutos
- 30 minutos
- 1 hora
- 3 horas
- 6 horas
- A cada 12 horas
Se a reentrega de uma mensagem MQTT roteada enfileirada para reentrega for bem-sucedida, o Event Grid tentará remover a mensagem da fila de novas tentativas em regime de melhor esforço, mas você ainda poderá receber mensagens duplicadas.