Compartilhar via


Espaços de tópicos no recurso do Agente MQTT da Grade de Eventos do Azure

Um espaço de tópico representa vários tópicos por meio de um conjunto de modelos de tópicos. Os modelos de tópicos são uma extensão de filtros MQTT que dão suporte a variáveis, acompanhado dos curingas MQTT. Cada espaço de tópico representa os tópicos MQTT que o mesmo conjunto de clientes precisa usar para se comunicar.

Os espaços de tópicos são usados para simplificar o gerenciamento de controle de acesso, permitindo que você permita acesso de publicação ou de assinatura a um grupo de tópicos de uma só vez, em vez de gerenciar o acesso para cada tópico individual. Para publicação ou assinatura em qualquer tópico MQTT, você precisa:

  1. Criar um recurso de cliente para cada cliente que precisa se comunicar via MQTT.
  2. Criar um grupo de clientes que inclua os clientes que precisam ter acesso de publicação ou assinatura no mesmo tópico MQTT.
  3. Criar um espaço de tópico que inclua um modelo de tópico que representa o tópico/filtro de tópico pretendido.
  4. Criar uma associação de permissão para permitir ao grupo de clientes acesso para publicação ou assinatura no espaço de tópico.

Filtro de tópico MQTT:

Um filtro de tópico MQTT é um tópico MQTT que pode incluir curingas para um ou mais dos segmentos, permitindo que ele corresponda a vários tópicos MQTT. Ele é usado para simplificar as solicitações de assinatura, pois um filtro de tópico pode corresponder a vários tópicos.

O Agente MQTT dá suporte a todos os curingas MQTT definidos pela especificação de MQTT da seguinte maneira:

  • +: que corresponde a um segmento individual.
    • Por exemplo, o filtro de tópico "machines/+/alert" corresponde aos seguintes tópicos:
      • machines/temp/alert
      • machines/humidity/alert
  • #: que corresponde a nenhum ou mais segmentos no final do tópico.
    • Por exemplo, o filtro de tópico "machines/#" corresponde aos seguintes tópicos:
      • machines
      • machines/temp
      • machines/humidity
      • machines/temp/alert etc.

Para obter mais informações sobre curingas, confira Curingas de tópico na especificação de MQTT.

Modelos de tópicos

Os modelos de tópicos são uma extensão de filtros MQTT que dão suporte a variáveis, acompanhado dos curingas MQTT. A configuração de espaços de tópicos também fornece 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. Saiba mais sobre como os modelos de tópicos fornecem controle de acesso granular.

Configuração do espaço de tópico:

Os espaços de tópicos podem agrupar até dez modelos de tópicos. Os modelos de tópicos dão suporte a curingas MQTT (+ e #) e às seguintes variáveis:

  • ${client.authenticationName}: essa variável representa o nome de autenticação do cliente. Saiba mais sobre os nomes de autenticação do cliente.
  • ${client.attributes.x}: essa variável representa um atributo atribuído a um cliente durante a criação/a atualização do cliente, por exemplo, "x" será igual à cadeia de caracteres exata da chave de atributo. Por exemplo, se um cliente tiver o atributo, um modelo de tópico “area/${client.attributes.area}/telemetry” permitirá que apenas os clientes com o atributo> “area:section1” façam publicações no tópico MQTT “area/section1/telemetry”. Saiba mais sobre os atributos de cliente.

Observação:

  • Os tópicos que começam com $ são reservados para uso interno.

  • Uma variável pode representar uma parte de um segmento ou um segmento inteiro, mas não pode abranger mais de um segmento. Por exemplo, um modelo de tópico pode incluir "machines/${client.authenticationName|.factory1}/temp", que corresponde aos tópicos "machines/machine1.factory1/temp", "machines/machine2.factory1/temp", etc.

  • Os modelos de tópicos usam os caracteres especiais $ e |, e eles precisam ter caracteres de escape diferentes de acordo com o shell que está sendo usado. No PowerShell, $ pode ter os caracteres de escape vehicles/${dollar}telemetry/#. Se você estiver usando o PowerShell, poderá usar caracteres de escape para esses caracteres especiais, conforme mostrado nos seguintes exemplos:

    • "vehicles/${client.authenticationName|dollar}/#"

    • vehicles/${client.authenticationName"|"dollar}/#

Configuração no portal do Azure:

Use as etapas a seguir para criar um espaço de tópico:

  • Acesse seu namespace no portal do Azure.
  • Em Espaços de Tópicos, selecione +Espaço de Tópico.
  • Atribua um Nome ao espaço de tópico.

Observação

  • O nome do espaço de tópico pode ter entre 3 e 50 caracteres.
  • Ele pode incluir caracteres alfanuméricos, hífen (-) e não pode conter espaços.
  • Adicione, pelo menos, um modelo de tópico selecionando +Adicionar modelo de tópico.
  • Selecione Criar.

Captura de tela da configuração do espaço de tópico.

Configuração na CLI do Azure:

Use os seguintes comandos para criar um espaço 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

As atualizações de configuração do espaço de tópico podem levar alguns minutos para serem propagadas.

Próximas etapas:

Saiba mais sobre a autorização e a autenticação:

Início Rápido:

Conceitos: