Encaminhamento de Mensagens MQTT no Azure Event Grid

O Event Grid permite-lhe encaminhar as suas mensagens MQTT para serviços Azure ou webhooks para processamento adicional. Assim, você pode criar soluções de ponta a ponta usando seus dados de IoT para análise, armazenamento e visualizações de dados, entre outros casos de uso.

Diagrama do encaminhamento das mensagens MQTT.

Como posso usar a funcionalidade de roteamento?

Encaminhar as mensagens dos seus clientes para um serviço Azure ou para o seu endpoint personalizado permite-lhe maximizar os benefícios destes dados. Seguem-se alguns dos muitos casos de uso para tirar partido desta funcionalidade:

  • Análise de Dados: extraia e analise as mensagens encaminhadas dos seus clientes para otimizar a sua solução. Por exemplo, analise a telemetria das suas máquinas para prever quando agendar a manutenção antes que ocorram falhas, evitando atrasos e danos adicionais.
  • Aplicações sem servidor: ativar uma função sem servidor com base nas mensagens encaminhadas pelos seus clientes. Por exemplo, quando um sensor de movimento detetar um movimento, envie uma notificação ao pessoal de segurança para o resolver.
  • Visualizações de Dados: construa visualizações dos dados encaminhados dos seus clientes para representar e compreender facilmente os dados, bem como destacar tendências e valores fora do comum.

Configuração de Roteamento.

A configuração de encaminhamento permite-lhe enviar todas as suas mensagens MQTT dos seus clientes para um tópico de namespace da Grade de Eventos ou para um tópico personalizado da Grelha de Eventos. Depois de as mensagens estarem no tópico, pode configurar uma subscrição de evento para consumir as mensagens do tópico. Use os seguintes passos gerais para alcançar esta configuração:

  • Tópico do espaço de nomes como destino de encaminhamento:
    • Crie um tópico de namespace de Grelha de Eventos onde todas as mensagens MQTT sejam encaminhadas.
    • Crie uma subscrição de evento do tipo push para encaminhar estas mensagens para um dos serviços suportados pela Azure ou para webhooks personalizados ou uma subscrição de evento do tipo fila para extrair as mensagens diretamente do tópico de namespace através da sua aplicação.
    • Defina a configuração de encaminhamento com base no tópico que criou no primeiro passo.

Diagrama do encaminhamento da mensagem MQTT para tópicos de namespace.

Diagrama do encaminhamento da mensagem MQTT para tópicos personalizados.

Observação

Desativar o acesso à rede pública no namespace fará com que o encaminhamento MQTT falhe.

Diferença entre tópicos de espaço de nomes e tópicos personalizados como destino de roteamento

A tabela seguinte mostra a diferença entre tópicos de espaço de nomes e tópicos personalizados como destino de roteamento. Para uma divisão detalhada das quotas e limites incluídos em cada recurso da Grelha de Eventos, consulte Quotas e limites.

Ponto de comparação Tópico de namespace Tema personalizado
Capacidade de processamento Alta, até 40 MB/s (entrada) e 80 MB/s (saída) Baixo, até 5 MB/s (entrada e saída)
Sistema de entrega puxada Sim
Empurrar a entrega para os Centros de Eventos Sim Sim
Entrega push para serviços do Azure (Functions, Webhooks, filas de armazenamento, filas e tópicos do Service Bus, conexões híbridas de retransmissão) Sim
Retenção de mensagens 7 dias 1 dia
Requisito de atribuição de funções Não é necessário, pois o broker MQTT e o tópico do namespace estão no mesmo namespace É obrigatório, pois o namespace que aloja a funcionalidade do broker MQTT e o tópico personalizado são recursos diferentes

Requisitos de tópicos personalizados do Event Grid para encaminhamento

O tópico personalizado da Grelha de Eventos utilizado para o encaminhamento precisa de cumprir os seguintes requisitos:

  • Tem de ser configurado para usar o Cloud Event Schema v1.0
  • Tem de estar na mesma região do namespace.
  • Deve atribuir a função "Event Grid Data Sender" a si mesmo ou à identidade gerida selecionada no tópico personalizado do Event Grid antes que a configuração de encaminhamento seja aplicada.
    • No portal, aceda ao recurso de tópico da Event Grid que foi criado.
    • No item do menu "Controlo de Acesso (IAM)", selecione Adicionar uma atribuição de funções.
    • No separador "Função", selecione "Remetente de Dados da Grelha de Eventos" e depois selecione Próximo.
    • No separador "Membros", selecione +Select membros, depois escreva o seu nome de utilizador AD na caixa "Select" que aparece (por exemplo, user@contoso.com).
    • Selecione o nome de utilizador do seu AD e depois selecione "Analisar + atribuir"

Configuração do portal do Azure

Use os seguintes passos para configurar o encaminhamento:

  • Vá para seu namespace no portal do Azure.
  • Em Encaminhamento, marque Ativar Encaminhamento.
  • Em tipo de tema, selecione tema de espaço de nomes ou tópico personalizado
  • No tópico, selecione o tópico que criou onde todas as mensagens MQTT são encaminhadas.
  • Se foi selecionado um tema personalizado, aparece a secção Identidade Gerida para Entrega. Selecione uma das seguintes opções para a identidade usada para autenticar o corretor MQTT ao entregar as mensagens MQTT ao tópico personalizado:
    • Nenhum: neste caso, tens de atribuir a ti próprio a função "Event Grid Data Sender" no tópico personalizado.
    • Identidade atribuída ao sistema: neste caso, é necessário ativar a identidade atribuída ao sistema no namespace como pré-requisito e atribuir o papel "EventGrid Data Sender" à identidade atribuída pelo sistema no tópico personalizado.
    • Identidade atribuída pelo utilizador: neste caso, é necessário ativar a identidade atribuída pelo utilizador no namespace como pré-requisito e atribuir o papel "EventGrid Data Sender" à identidade selecionada no tópico personalizado.
      • Se a identidade atribuída pelo usuário for selecionada, aparece um menu suspenso onde pode selecionar a identidade desejada.
  • Selecione Aplicar.

Captura de ecrã a mostrar a configuração do encaminhamento através do portal.

Para instruções de configuração de enriquecimento, consulte Configuração do portal de enriquecimento.

Configuração do Azure CLI

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", //Allowed values: None, SystemAssigned, UserAssigned
                "userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>" //needed only if UserAssigned was the value of type
            },

	}
}

Para instruções de configuração de enriquecimentos, vá a configuração de enriquecimento da CLI.

Comportamento de encaminhamento de mensagens MQTT

Ao encaminhar mensagens MQTT para tópicos personalizados, o Event Grid proporciona uma entrega duradoura ao tentar entregar cada mensagem pelo menos uma vez imediatamente. Se houver uma falha, o Event Grid ou tenta a entrega novamente ou deixa cair a mensagem que deveria ser encaminhada. A Grade de Eventos não garante a ordem de entrega dos eventos, portanto, os assinantes podem recebê-los fora de ordem.

A tabela seguinte descreve o comportamento do encaminhamento de mensagens MQTT com base em diferentes erros.

Erro Descrição do erro Comportamento
TópicoNãoEncontradoErro O tópico personalizado configurado para receber todas as mensagens encaminhadas MQTT foi eliminado. O Event Grid deixa cair a mensagem MQTT que deveria ser encaminhada.
AutenticationError O papel de Remetente de Dados da Grelha de Eventos para o tópico personalizado configurado como destino para mensagens encaminhadas MQTT foi eliminado. O Event Grid deixa cair a mensagem MQTT que deveria ser encaminhada.
DemasiadasSolicitações O número de mensagens encaminhadas por MQTT por segundo excede o limite de publicação para o tópico personalizado. O Event Grid tenta novamente encaminhar a mensagem MQTT.
Erro de serviço Um erro inesperado do servidor por um motivo operacional. O Event Grid tenta novamente encaminhar a mensagem MQTT.

Durante as tentativas, o Event Grid utiliza uma política de tentativas com backoff exponencial para o encaminhamento de mensagens MQTT. O Event Grid tenta novamente a entrega no seguinte cronograma, com base em esforços razoáveis:

  • 10 segundos
  • 30 segundos
  • 1 minuto
  • 5 minutos
  • 10 minutos
  • 30 minutos
  • Uma hora
  • 3 horas
  • 6 horas
  • A cada 12 horas

Se uma mensagem MQTT encaminhada que estava na fila para reentrega tiver sucesso, a Event Grid tenta remover a mensagem da fila de retentativa com base no melhor esforço, mas ainda podem ser recebidas duplicatas.

Passos seguintes:

Use os seguintes artigos para saber mais sobre roteamento:

Início rápido:

Conceitos: