Espaços de tópicos no Grade de Eventos do Azure MQTT broker

Um espaço temático representa múltiplos tópicos por meio de um conjunto de modelos de tópicos. Modelos de tópicos estendem os filtros de tópicos do MQTT com suporte a variáveis, além dos curingas padrão do MQTT. Cada espaço de tópicos representa os tópicos MQTT que o mesmo conjunto de clientes usa para se comunicar.

Os espaços de tópicos simplificam o controle de acesso ao permitir que você conceda, publique ou assine acesso a um grupo de tópicos ao mesmo tempo, em vez de gerenciar o acesso para cada tema individual. O modelo de controle de acesso combina quatro recursos para conceder a um grupo cliente acesso para publicar ou assinar um espaço temático:

  • Cliente: Representa um dispositivo ou aplicação que se comunica via MQTT.
  • Grupo cliente: Agrupa os clientes que precisam do mesmo acesso ao mesmo conjunto de tópicos MQTT.
  • Espaço de tópicos: Agrupa um ou mais modelos de tópicos que representam os tópicos pretendidos ou filtros de tópicos.
  • Vinculação de permissões: Concede a um grupo cliente acesso a publicar ou assinar a um espaço temático.

Para mais informações, veja Controle de acesso para clientes MQTT.

Este artigo explica como filtros de tópicos MQTT, modelos de tópicos e configuração do espaço de tópicos funcionam juntos, para que você possa agrupar tópicos relacionados e gerenciar o acesso dos clientes de forma eficiente.

Filtros de tópicos MQTT

Um filtro de tópico MQTT é um tópico MQTT que pode incluir curingas para um ou mais de seus segmentos, de modo que corresponda a múltiplos tópicos MQTT. Filtros de tópicos simplificam os pedidos de assinatura, porque um filtro de tópico pode corresponder a vários tópicos.

O broker MQTT oferece suporte a todos os caracteres curinga do MQTT definidos pela especificação MQTT:

  • + Corresponde a um único segmento. Por exemplo, o filtro machines/+/alert de tópicos corresponde a estes tópicos:
    • machines/temp/alert
    • machines/humidity/alert
  • # corresponde a zero ou mais segmentos ao final do tópico. Por exemplo, o filtro machines/# de tópicos corresponde a estes tópicos:
    • machines
    • machines/temp
    • machines/humidity
    • machines/temp/alert

Para saber mais sobre curingas, consulte Curingas de tópico na especificação MQTT.

Modelos de tópicos

Modelos de tópicos estendem os filtros de tópicos do MQTT com suporte a variáveis, além dos curingas do MQTT. A configuração em espaço de tópicos também oferece controle de acesso granular, permitindo que você controle a autorização de cada cliente dentro de um grupo cliente para publicar ou assinar seu próprio tema. Para mais informações, veja como os modelos de tópicos fornecem controle de acesso granular.

Configuração do espaço tópico

Um espaço de tópicos pode agrupar até 10 modelos de tópicos. Os modelos de tópicos suportam os curingas do MQTT (+ e #) e as seguintes variáveis:

  • ${client.authenticationName}: Representa o nome de autenticação do cliente. Para mais informações, veja termos-chave dos metadados do cliente.
  • ${client.attributes.x}: Representa um atributo atribuído a um cliente quando o cliente é criado ou atualizado, onde x é a string exata da chave de atributo. Por exemplo, se um cliente possui o atributo area:section1, o modelo area/${client.attributes.area}/telemetry de tópico permite que apenas clientes com esse atributo publiquem sobre o tema area/section1/telemetryMQTT . Para mais informações, veja clientes MQTT.

Observação

  • Tópicos que começam $ são reservados para uso interno.
  • Uma variável pode representar uma porção de um segmento ou um segmento inteiro, mas não pode cobrir mais de um segmento. Por exemplo, o modelo machines/${client.authenticationName|.factory1}/temp de tópico corresponde a tópicos como machines/machine1.factory1/temp e machines/machine2.factory1/temp.
  • Os modelos de tópicos usam os caracteres especiais $ e |, que talvez seja necessário escapar, dependendo do shell que você usa. Por exemplo, no PowerShell, escape estes caracteres conforme mostrado nos exemplos a seguir:
    • "vehicles/${client.authenticationName|dollar}/#"
    • vehicles/${client.authenticationName"|"dollar}/#

Para criar um espaço de tópico no portal do Azure ou com a CLI do Azure, consulte Publicar e assinar mensagens MQTT. Ao nomear um espaço de tópico, use estas regras:

  • O nome de um espaço de tópico pode ter de 3 a 50 caracteres.
  • O nome de um espaço de tópico pode incluir caracteres alfanuméricos e hífens (-), sem espaços.

Captura de tela da configuração do espaço de tópicos no portal do Azure.

O exemplo a seguir do CLI do Azure cria um espaço de tópicos que possui dois templates de tópico:

az eventgrid namespace topic-space create -g myRG --namespace-name myNS -n myTopicSpace --topic-templates ['segment1/+/segment3/${client.authenticationName}', "segment1/${client.attributes.attribute1}/segment3/#"]

Observação

Atualizações de configuração em espaço de tópicos podem levar alguns minutos para serem propagadas.