Espaços de tópico no recurso de 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ópico. Os modelos de tópico são uma extensão dos filtros MQTT que suportam variáveis, juntamente com os 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ê conceda, publique ou assine acesso a um grupo de tópicos de uma só vez, em vez de gerenciar o acesso para cada tópico individual. Para publicar ou assinar qualquer tópico MQTT, você precisa:
- Crie um recurso de cliente para cada cliente que precisa se comunicar por MQTT.
- Crie um grupo de clientes que inclua os clientes que precisam de acesso para publicar ou assinar o mesmo tópico MQTT.
- Crie um espaço de tópico que inclua um modelo de tópico que represente o filtro de tópico/tópico pretendido.
- Crie uma associação de permissão para conceder ao grupo de clientes acesso para publicar ou assinar o 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 de seus 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 broker MQTT suporta todos os curingas MQTT definidos pela especificação MQTT da seguinte maneira:
- +: que corresponde a um único segmento.
- Por exemplo, filtro de tópico: "machines/+/alert" corresponde aos seguintes tópicos:
- máquinas/temp/alerta
- máquinas/humidade/alerta
- Por exemplo, filtro de tópico: "machines/+/alert" corresponde aos seguintes tópicos:
- #: que corresponde a zero ou mais segmentos no final do tópico.
- Por exemplo, filtro de tópico: "machines/#" corresponde aos seguintes tópicos:
- máquinas
- máquinas/temp
- máquinas/humidade
- máquinas/temp/alerta, etc.
- Por exemplo, filtro de tópico: "machines/#" corresponde aos seguintes tópicos:
Para obter mais informações sobre curingas, consulte Tópico Curingas na especificação MQTT.
Modelos de tópicos
Os modelos de tópico são uma extensão dos filtros MQTT que suportam variáveis, juntamente com os curingas MQTT. A configuração de espaços de tópico também fornece controle de acesso granular, permitindo que você controle a autorização de cada cliente dentro de um grupo de clientes para publicar ou assinar seu próprio tópico. Saiba mais sobre como os modelos de tópico fornecem controle de acesso granular.
Configuração do espaço de tópico:
Os Espaços de Tópicos podem agrupar até 10 modelos de tópicos. Os modelos de tópico suportam curingas MQTT (+ e #) e as seguintes variáveis:
- ${client.authenticationName}: esta variável representa o nome de autenticação do cliente. Saiba mais sobre nomes de autenticação de cliente.
- ${client.attributes.x}: Esta variável representa um atributo atribuído a um cliente durante a criação/atualização do cliente, como "x" seria 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> de cliente "area:section1" publiquem no tópico MQTT "area/section1/telemetry". Saiba mais sobre os atributos do cliente.
Nota:
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 cobrir mais de um segmento. Por exemplo, um modelo de tópico pode incluir "machines/${client.authenticationName|. factory1}/temp" corresponde aos tópicos "machines/machine1.factory1/temp", "machines/machine2.factory1/temp", etc.
Os modelos de tópico usam caracteres especiais $ e | e estes precisam ser escapados de forma diferente com base na concha que está sendo usada. No PowerShell, $ pode ser escapado com veículos/${dollar}telemetria/#. Se você estiver usando o PowerShell, poderá escapar desses caracteres especiais, conforme mostrado nos exemplos a seguir:
"vehicles/${client.authenticationName|dollar}/#"
vehicles/${client.authenticationName"|"dollar}/#
Configuração do portal do Azure:
Use as seguintes etapas para criar um espaço de tópico:
- Vá para seu namespace no portal do Azure.
- Em Espaços de Tópico, selecione +Espaço de Tópico.
- Atribua um Nome ao seu espaço de tópico.
Nota
- O nome do espaço de tópico pode ter de 3 a 50 caracteres.
- O nome do espaço de tópico pode incluir alfanumérico, hífen(-) e, sem espaços.
- Adicione pelo menos um modelo de tópico selecionando +Adicionar modelo de tópico.
- Selecione Criar.
Configuração da 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/#"]
Nota
As atualizações de configuração de espaço de tópico podem levar alguns minutos para se propagar.
Passos seguintes:
Saiba mais sobre autorização e autenticação: