Visão geral do recurso do agente MQTT na Grade de Eventos do Azure
A Grade de Eventos do Azure permite que os clientes MQTT se comuniquem entre si e com os serviços do Azure para dar suporte às soluções de IoT (Internet das Coisas).
O recurso do agente MQTT da Grade de Eventos do Azure permite que você realize os seguintes cenários:
- Ingira a telemetria usando um padrão de mensagem muitos para um. Esse padrão permite que o aplicativo descarregue a carga de gerenciar o alto número de conexões com dispositivos para a Grade de Eventos.
- Controle os clientes MQTT usando o padrão de mensagem de solicitação-resposta (um para um). Esse padrão permite que qualquer cliente se comunique com qualquer outro cliente sem restrições, independentemente das funções dos clientes.
- Transmita alertas para uma frota de clientes usando o padrão de mensagem um para muitos. Esse padrão permite que o aplicativo publique apenas uma mensagem que o serviço replica para cada cliente interessado.
- Integre os dados dos clientes MQTT roteando as mensagens MQTT para serviços do Azure e webhooks por meio da funcionalidade Entrega push HTTP. Essa integração aos serviços do Azure permite que você crie pipelines de dados que começam com a ingestão de dados dos seus dispositivos IoT.
Encontre exemplos de código que demonstram esses cenários neste repositório.
O agente MQTT é ideal para a implementação de cenários automotivos e de mobilidade, entre outros. Confira a arquitetura de referência para saber como criar soluções seguras e escalonáveis para conectar milhões de veículos à nuvem, usando os serviços de mensagens e análise de dados do Azure.
Conceitos principais
A seguir, há uma lista dos principais conceitos envolvidos no recurso do agente MQTT da Grade de Eventos do Azure.
MQTT
O MQTT é um protocolo de transporte de mensagens de publicação/assinatura que foi projetado para ambientes restritos. É o padrão de comunicação para cenários de IoT devido à eficiência, escalabilidade e confiabilidade. O agente MQTT permite que os clientes publiquem e assinem mensagens nos protocolos MQTT v3.1.1, MQTT v3.1.1 sobre WebSockets, MQTT v5 e MQTT v5 sobre WebSockets. A lista a seguir mostra alguns dos destaques dos recursos do agente MQTT:
Recursos do MQTT v5:
- O Last Will and Testament (LWT) notifica seus clientes MQTT sobre as desconexões abruptas de outros clientes MQTT. Você pode usar o LWT para garantir um fluxo previsível e confiável de comunicação entre clientes MQTT durante desconexões inesperadas.
- As propriedades de usuário permitem que você adicione pares chave-valor personalizados no cabeçalho da mensagem para fornecer mais contexto sobre a mensagem. Por exemplo, inclua a finalidade ou a origem da mensagem para que o destinatário possa processar a mensagem com eficiência.
- O padrão de solicitação-resposta permite que os clientes aproveitem o padrão assíncrono de solicitação-resposta, especificando o tópico de resposta e a ID de correlação na solicitação para que o cliente responda às mensagens sem configuração prévia.
- O intervalo de expiração da mensagem permite que você declare ao agente MQTT quando desconsiderar uma mensagem que não seja mais relevante ou válida. Por exemplo, desconsidere comandos ou alertas obsoletos.
- Os aliases de tópico ajudam os clientes a reduzir o tamanho do campo de tópico, tornando a transferência de dados menos cara.
- O Tamanho Máximo da Mensagem permite que os clientes controlem o tamanho máximo da mensagem que podem processar do servidor.
- O Tamanho Máximo de Recebimento permite que os clientes controlem a taxa de mensagens dependendo das funcionalidades, como funcionalidades de armazenamento e velocidade de processamento.
- O Início Limpo e a Expiração da Sessão permitem que os clientes otimizem a confiabilidade e a segurança da sessão preservando as informações de assinatura e as mensagens do cliente para um intervalo de tempo configurável.
- As confirmações negativas permitem que os clientes reajam com eficiência a diferentes códigos de erro.
- Os pacotes de desconexão enviados pelo servidor permitem que os clientes processem as desconexões com eficiência.
O agente MQTT estará adicionando mais recursos MQTT v5 no futuro para se alinhar mais com as especificações MQTT. Os itens a seguir detalham as diferenças atuais entre os recursos compatíveis com o agente MQTT e as especificações do MQTT v5: Não há suporte para Mensagem, Sinalizador de Retenção, Ordenação de Mensagens e QoS 2.
Recursos do MQTT v3.1.1:
- O Last Will and Testament (LWT) notifica seus clientes MQTT sobre as desconexões abruptas de outros clientes MQTT. Você pode usar o LWT para garantir um fluxo previsível e confiável de comunicação entre clientes MQTT durante desconexões inesperadas.
- As sessões persistentes garantem a confiabilidade preservando as informações de assinatura e as mensagens do cliente quando um cliente se desconecta.
- A QoS 0 e 1 fornecem aos clientes controle sobre a eficiência e a confiabilidade da comunicação.
O agente MQTT estará adicionando mais recursos do MQTT v3.1.1 no futuro para se alinhar mais com as especificações do MQTT. Os itens a seguir detalham as diferenças atuais entre os recursos com suporte do Agente MQTT e a especificação MQTT v3.1.1: não há suporte para Sinalizador de retenção, Ordenação de mensagens e QoS 2.
Saiba mais sobre o agente MQTT e as limitações atuais.
Modelo de mensagem de publicação/assinatura
O modelo de mensagem publicação/assinatura fornece uma comunicação escalonável e assíncrona aos clientes. Ele permite que os clientes descarreguem a carga de lidar com um alto número de conexões e mensagens para o serviço. Por meio do modelo de mensagem publicação/assinatura, os clientes podem se comunicar com eficiência usando os padrões de mensagens um para muitos, muitos para um e um para um.
- O padrão de mensagem um para muitos permite que os clientes publiquem apenas uma mensagem que o serviço replica para cada cliente interessado.
- O padrão de mensagens de muitos para um permite que os clientes descarreguem o ônus de gerenciar o grande número de conexões com o agente MQTT.
- O padrão de mensagem um para um permite que qualquer cliente se comunique com qualquer outro cliente sem restrições, independentemente das funções dos clientes.
Namespace
O Namespace da Grade de Eventos é um contêiner de gerenciamento para os recursos que dão suporte à funcionalidade do agente do MQTT, acompanhado dos recursos que dão suporte à funcionalidade de entrega pull. Seu cliente MQTT pode se conectar ao agente MQTT e publicar/assinar mensagens, enquanto o agente MQTT autentica seus clientes, autoriza solicitações de publicação/assinatura e encaminha mensagens aos clientes interessados. Saiba mais sobre o conceito de namespace.
Clientes
Os clientes consultam os dispositivos IoT ou os aplicativos que publicam e assinam mensagens MQTT.
Os dispositivos IoT são objetos físicos conectados à Internet usados para transmitir a telemetria e receber comandos. Esses dispositivos podem ser sensores, dispositivos, computadores ou outros objetos equipados com sensores inseridos e programas de software. Os sensores e os programas de software permitem que eles se comuniquem e interajam entre si e com o ambiente ao redor. O valor dos dispositivos IoT está na capacidade deles de fornecer dados e insights em tempo real, permitindo que as empresas e as pessoas tomem decisões informadas e aprimorem a eficiência e a produtividade.
Os aplicativos IoT são programas de software projetados para interagir e processar dados de dispositivos IoT. Normalmente, eles incluem componentes como coleta, processamento, armazenamento, visualização e análise de dados. Esses aplicativos permitem que os usuários monitorem e controlem dispositivos conectados, automatizem tarefas e obtenham insights dos dados gerados pelos dispositivos IoT.
Autenticação de cliente
A Grade de Eventos tem um registro de clientes que armazena informações sobre os clientes com permissão para se conectar a ela. Para que um cliente se conecte, precisa haver uma entrada para ele no registro de clientes. Quando um cliente se conecta ao agente MQTT, ele precisa se autenticar com o agente MQTT com base nas credenciais armazenadas no registro de identidade. O Agente MQTT dá suporte para os seguintes mecanismos de autenticação de cliente:
- Autenticação de certificado X.509, que é o padrão de autenticação do setor em dispositivos IoT.
- Autenticação do Microsoft Entra ID, que é o padrão de autenticação do Azure para aplicativos. Saiba mais sobre a autenticação do cliente MQTT.
- Autenticação OAuth 2.0 (Token Web JSON), que fornece uma opção leve, segura e flexível para clientes MQTT que não estão provisionados no Azure.
Controle de acesso
O controle de acesso é fundamental para cenários de IoT, considerando a enorme escala de ambientes de IoT e os desafios de segurança exclusivos de dispositivos restritos. A Grade de Eventos fornece o RBAC (controle de acesso baseado em função) por meio de um modelo de controle de acesso flexível que permite que você gerencie a autorização dos clientes para publicação ou assinatura em tópicos.
Dada a enorme escala de ambientes de IoT, atribuir uma permissão a cada cliente e a cada tópico é incrivelmente monótono. O controle de acesso flexível da Grade de Eventos resolve esse desafio de escala por meio do agrupamento de clientes e tópicos em grupos de clientes e espaços de tópicos. Depois de criar grupos de clientes e espaços de tópicos, configure uma associação de permissão a fim de permitir acesso a um grupo de clientes para publicação ou assinatura em um espaço de tópico.
Os espaços de tópicos também fornecem controle de acesso granular, permitindo que você controle a autorização de cada cliente em um grupo de clientes para publicação ou assinatura em um tópico próprio. Esse controle de acesso granular é obtido por meio de variáveis em modelos de tópicos. Saiba mais sobre o controle de acesso.
Roteamento
A Grade de Eventos permite rotear suas mensagens MQTT para webhooks ou serviços do Azure para processamento adicional. Dessa forma, você pode criar soluções de ponta a ponta usando seus dados de IoT para análise de dados, armazenamento e visualizações, entre outros casos de uso. A configuração de roteamento permite enviar todas as suas mensagens MQTT de seus clientes para um tópico de namespace da Grade de Eventos ou um tópico personalizado da 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. Por exemplo, essa funcionalidade permite que você use a Grade de Eventos para rotear a telemetria dos seus dispositivos IoT para os Hubs de Eventos e, em seguida, para o Azure Stream Analytics a fim de obter insights da telemetria do dispositivo. Saiba mais sobre o roteamento.
Integração do agente MQTT de borda
A Grade de Eventos integra-se ao MQ do Azure IoT para fazer a ponte de sua funcionalidade de agente MQTT na borda com o recurso de agente MQTT da Grade de Eventos do Azure na nuvem. A Internet das Coisas do Azure MQ é um novo agente MQTT distribuído para computação de borda, em execução em clusters Kubernetes habilitados para Arc. Ele pode se conectar ao agente MQTT da Grade de Eventos com a autenticação do Microsoft Entra ID (anteriormente Azure Active Directory) usando a identidade gerenciada atribuída pelo sistema, o que simplifica o gerenciamento de credenciais. A Internet das Coisas do Azure MQ fornece alta disponibilidade, escalabilidade e segurança para seus dispositivos e aplicativos IoT. Agora está disponível em versão prévia pública como parte das Operações do Azure IoT. Saiba mais sobre como conectar o Azure IoT MQ ao agente MQTT da Grade de Eventos do Azure.
Eventos do ciclo de vida de clientes MQTT
Os eventos do ciclo de vida do cliente permitem que os aplicativos reajam a eventos sobre o status da conexão do cliente ou sobre as operações de recursos do cliente. Ele permite que você acompanhe o status da conexão do seu cliente, reaja com uma ação de mitigação para desconexões de clientes e acompanhe o namespace ao qual seus clientes estão conectados durante failovers automatizados. Saiba mais sobre os Eventos do Ciclo de Vida do Cliente MQTT.
Nomes de domínio personalizados
O suporte para nomes de domínio personalizados permite que os usuários atribuam seus próprios nomes de domínio aos pontos de extremidade MQTT e HTTP do espaço de nomes da Grade de Eventos, aumentando a segurança e simplificando a configuração do cliente. Esse recurso ajuda as empresas a atender aos requisitos de segurança e conformidade e elimina a necessidade de modificar clientes já vinculados ao domínio. A atribuição de um nome de domínio personalizado a vários namespaces também pode ajudar a aumentar a disponibilidade, gerenciar a capacidade e lidar com a mobilidade de clientes entre regiões. Saiba mais sobre Nomes de domínios personalizados.
Próximas etapas
Use os artigos a seguir para saber mais sobre o agente MQTT e seus principais conceitos.
- Publicar e assinar mensagens MQTT
- Tutorial: Encaminhar mensagens MQTT para Hubs de Eventos do Azure usando tópicos de namespace
- Tutorial: Encaminhar mensagens MQTT para Azure Functions usando tópicos personalizados