Compartilhar via


Visão geral do recurso do agente MQTT na Grade de Eventos do Azure

A Grade de Eventos do Azure permite que seus clientes de MQTT (Transporte de Telemetria de Enfileiramento de Mensagens) se comuniquem entre si e com os serviços do Azure para dar suporte às soluções de IoT (Internet das Coisas). Você pode usar o recurso do agente MQTT da Grade de Eventos para realizar os cenários a seguir. Para obter exemplos de código que demonstram esses cenários, consulte este repositório.

  • Ingerir telemetria usando um padrão de mensagens 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 seus clientes MQTT usando o padrão de mensagens 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.
  • Difunda alertas para uma frota de clientes usando o padrão de mensagens um para muitos. Esse padrão permite que o aplicativo publique apenas uma mensagem que o serviço replica para cada cliente interessado.
  • Integre dados de seus clientes MQTT roteando mensagens MQTT para serviços e webhooks do Azure por meio da funcionalidade de entrega por push HTTP. Você pode usar essa integração com os serviços do Azure para criar pipelines de dados que começam com a ingestão de dados de seus dispositivos IoT.

O agente MQTT é ideal para a implementação de cenários automotivos, de mobilidade e de fabricação, entre outros. Para saber como criar soluções seguras e escalonáveis para conectar milhões de clientes MQTT à nuvem usando os serviços de análise de dados e mensagens do Azure, consulte as arquiteturas de referência automotiva e de fabricação .

Diagrama de alto nível da Grade de Eventos que mostra a comunicação MQTT bidirecional com os clientes editores e assinantes.

Principais conceitos

Os principais conceitos a seguir estão envolvidos no recurso do agente MQTT da Grade de Eventos.

MQTT

O MQTT é um protocolo de transporte de mensagens de publicação/assinatura que foi projetado para ambientes restritos. É um padrão de comunicação popular para cenários de IoT devido à eficiência, escalabilidade e confiabilidade. O agente MQTT permite que os clientes publiquem e assinem mensagens via MQTT v3.1.1, MQTT v3.1.1 no WebSocket, MQTT v5 e MQTT v5 via WebSocket. A lista a seguir mostra alguns dos destaques do recurso do agente MQTT:

  • Recursos do MQTT v5:

    • Última Vontade e Testamento: notifica seus clientes MQTT das desconexões abruptas de outros clientes MQTT. Você pode usar esse recurso para garantir um fluxo previsível e confiável de comunicação entre os clientes MQTT durante desconexões inesperadas.
    • Propriedades do usuário: permite que você adicione pares de 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 receptor possa lidar com a mensagem com eficiência.
    • Padrão de solicitação-resposta: permite que seus clientes aproveitem o padrão assíncrono de solicitação-resposta padrão, especificando o tópico de resposta e a ID de correlação na solicitação para que o cliente responda sem configuração prévia.
    • 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. Exemplos incluem desconsiderar comandos ou alertas obsoletos.
    • Aliases de tópico: ajuda seus clientes a reduzir o tamanho do campo de tópico, o que torna a transferência de dados menos cara.
    • Tamanho máximo da mensagem: permite que seus clientes controlem o tamanho máximo da mensagem que podem lidar com o servidor.
    • Receber o máximo: permite que seus clientes controlem a taxa de mensagens dependendo de seus recursos, como velocidade de processamento ou recursos de armazenamento.
    • Expiração de início e sessão limpas: permite que seus clientes otimizem a confiabilidade e a segurança da sessão preservando as informações e as mensagens da assinatura do cliente para um intervalo de tempo configurável.
    • Confirmações negativas: permite que seus clientes reajam com eficiência a diferentes códigos de erro.
    • Pacotes de desconexão enviados pelo servidor: permite que seus clientes lidem com eficiência as desconexões.
    • Retenção do MQTT: garante que o agente armazene a última mensagem publicada em um tópico e a entregue automaticamente a novos assinantes. Esse recurso permite que os dispositivos recebam instantaneamente o estado conhecido mais recente sem aguardar a próxima atualização. Essa funcionalidade permite uma sincronização de estado mais rápida e confiável em sistemas IoT.
  • Recursos do MQTT v3.1.1:

    • Última Vontade e Testamento: notifica seus clientes MQTT das desconexões abruptas de outros clientes MQTT. Você pode usar esse recurso para garantir um fluxo previsível e confiável de comunicação entre os clientes MQTT durante desconexões inesperadas.
    • Sessões persistentes: garante a confiabilidade preservando as informações e mensagens da assinatura do cliente quando um cliente se desconecta.
    • QoS (Qualidade de Serviço) 0 e 1: fornece aos seus clientes controle sobre a eficiência e a confiabilidade da comunicação.
    • Retenção do MQTT: garante que o agente armazene a última mensagem publicada em um tópico e a entregue automaticamente a novos assinantes. Esse recurso permite que os dispositivos recebam instantaneamente o estado conhecido mais recente sem aguardar a próxima atualização. Essa funcionalidade permite uma sincronização de estado mais rápida e confiável em sistemas IoT.

As seções a seguir descrevem 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 QoS 2.

Saiba mais sobre o agente MQTT e as limitações atuais.

Modelo de mensagens 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 mensagens de publicação e assinatura, seus clientes podem se comunicar com eficiência usando padrões de mensagens um para muitos, muitos para um e um para um:

  • Um para muitos: permite que os clientes publiquem apenas uma mensagem que o serviço replica para cada cliente interessado.
  • Muitos para um: permite que os clientes descarreguem a carga de gerenciar o alto número de conexões com o agente MQTT.
  • Um para um: permite que qualquer cliente se comunique com qualquer outro cliente sem restrições, independentemente das funções dos clientes.

Namespace

Um namespace da Grade de Eventos é um contêiner de gerenciamento para os recursos que dão suporte à funcionalidade do agente MQTT, juntamente com os recursos que dão suporte à funcionalidade de entrega de pull. Seu cliente MQTT pode se conectar ao agente MQTT e publicar-assinar mensagens. O agente MQTT autentica seus clientes, autoriza solicitações de publicação e assinatura e encaminha mensagens para 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 são sensores, dispositivos, computadores ou outros objetos equipados com sensores e software inseridos. 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á em sua capacidade de fornecer dados e insights em tempo real, o que permite que empresas e indivíduos tome decisões informadas e melhorem 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. Como 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 aos seguintes mecanismos de autenticação de cliente:

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 controle de acesso baseado em função por meio de um modelo de controle de acesso flexível que você pode usar para gerenciar a autorização de clientes para publicar ou assinar tópicos.

Com a enorme escala de ambientes de IoT, atribuir permissão para cada cliente a cada tópico é incrivelmente tedioso. O controle de acesso flexível da Grade de Eventos aborda esse desafio de escala por meio do agrupamento de clientes e tópicos em grupos de clientes e espaços de tópico. Depois de criar grupos de clientes e espaços de tópico, você pode configurar uma associação de permissão para conceder acesso a um grupo de clientes para publicar ou assinar um espaço de tópico.

Diagrama que mostra o modelo de controle de acesso do agente MQTT da Grade de Eventos.

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

Com a Grade de Eventos, você pode rotear suas mensagens MQTT para serviços ou webhooks 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. Usando a configuração de roteamento, você pode 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, com essa funcionalidade, você pode usar a Grade de Eventos para rotear a telemetria de seus dispositivos IoT para Hubs de Eventos e, em seguida, para o Azure Stream Analytics para obter insights da telemetria do dispositivo. Saiba mais sobre o roteamento.

Diagrama que mostra o roteamento de mensagens MQTT na Grade de Eventos.

Eventos MQTT para fluxos de eventos do Microsoft Fabric (versão prévia)

Rotear mensagens MQTT e eventos de nuvem de um namespace da Grade de Eventos para fluxos de eventos do Microsoft Fabric para análise, armazenamento e visualização em tempo real de dados de IoT.

Diagrama que mostra como os eventos MQTT são roteado para o Microsoft Fabric.

Integração do agente MQTT de borda

A Grade de Eventos integra-se às Operações de IoT do Azure para fazer a ponte de sua funcionalidade de agente MQTT na borda com o recurso de agente MQTT da Grade de Eventos na nuvem. As Operações de IoT do Azure fornecem um novo agente MQTT distribuído para computação de borda, em execução em clusters kubernetes habilitados para Azure Arc. Ele pode se conectar ao agente MQTT da Grade de Eventos com a autenticação de ID do Microsoft Entra usando a identidade gerenciada atribuída pelo sistema, o que simplifica o gerenciamento de credenciais. O agente MQTT fornece alta disponibilidade, escalabilidade e segurança para seus dispositivos e aplicativos IoT. Saiba mais sobre como conectar o agente MQTT de Operações IoT do Azure ao agente MQTT da Grade de Eventos.

Eventos de ciclo de vida do cliente 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 as operações de recurso do cliente. Você pode acompanhar o status da conexão do cliente, reagir com uma ação de mitigação para desconexões de cliente e acompanhar o namespace ao qual seus clientes estão anexados durante failovers automatizados. Saiba mais sobre eventos do ciclo de vida do cliente MQTT.

Nomes de domínio personalizados

O suporte a 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 namespace da Grade de Eventos, o que aprimora a segurança e simplifica 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ínio personalizados.

MQTT Retain (Prévia)

Uma mensagem retida MQTT é usada para armazenar o último valor válido conhecido de um tópico no agente, garantindo que os novos assinantes recebam imediatamente a mensagem mais recente sem aguardar a próxima publicação. Essa funcionalidade é especialmente útil em cenários como relatórios de estado do dispositivo, sinais de controle ou dados de configuração em que a mensagem mais recente sempre deve estar disponível para clientes em conexão. Para obter mais informações, consulte MQTT Retain support in Azure Event Grid.

Publicação HTTP (versão prévia)

A publicação HTTP permite que os aplicativos publiquem mensagens MQTT no agente MQTT da Grade de Eventos por meio de uma solicitação HTTPS POST simples, sem manter uma sessão MQTT ativa. É mais adequado para cenários em que os clientes MQTT não são viáveis ou necessários, como funções sem servidor, serviços de nuvem ou aplicativos de back-end. A publicação HTTP permite que arquiteturas controladas por eventos injetem mensagens MQTT de forma confiável e segura. Casos de uso comuns incluem a publicação de comandos de dispositivo, alertas ou sinais de controle do Azure Functions, aplicativos lógicos do Azure ou integrações de API. Para obter mais informações, consulte Publicação HTTP de mensagens MQTT na Grade de Eventos do Azure.

Conceitos

Saiba mais sobre os conceitos do agente MQTT na Grade de Eventos:

Saiba mais sobre o agente MQTT e seus principais conceitos: