Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um espaço temático representa múltiplos tópicos através de um conjunto de modelos de tópicos. Os modelos de tópicos alargam os filtros de tópicos MQTT com suporte a variáveis, para além dos carateres universais padrão do MQTT. Cada espaço temático representa os tópicos MQTT que o mesmo conjunto de clientes utiliza para comunicar.
Os espaços de tópicos simplificam o controlo de acesso ao permitir-lhe conceder, publicar ou subscrever acesso a um grupo de tópicos ao mesmo tempo, em vez de gerir o acesso para cada tema individual. O modelo de controlo de acesso combina quatro recursos para conceder a um grupo de clientes acesso para publicar ou subscrever um espaço temático:
- Cliente: Representa um dispositivo ou aplicação que comunica via MQTT.
- Grupo cliente: Agrupa os clientes que necessitam 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 subscrever um espaço temático.
Para mais informações, consulte controlo de acesso para clientes MQTT.
Este artigo explica como os filtros de tópicos do MQTT, os modelos de tópicos e a configuração do espaço de tópicos funcionam em conjunto, para que possa agrupar tópicos relacionados e gerir 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 dos seus segmentos, de modo a corresponder a múltiplos tópicos MQTT. Os filtros de tópicos simplificam os pedidos de subscrição, porque um filtro de tópico pode corresponder a vários tópicos.
O broker MQTT suporta todos os caracteres universais do MQTT definidos pela especificação MQTT:
-
+corresponde a um único segmento. Por exemplo, o filtromachines/+/alertde tópicos corresponde a estes tópicos:machines/temp/alertmachines/humidity/alert
-
#corresponde a zero ou mais segmentos no final do tópico. Por exemplo, o filtromachines/#de tópicos corresponde a estes tópicos:machinesmachines/tempmachines/humiditymachines/temp/alert
Para mais informações sobre carateres universais, consulte carateres universais de tópico na especificação MQTT.
Modelos de tópicos
Os modelos de tópicos estendem os filtros de tópicos MQTT com suporte para variáveis, além dos wildcards MQTT. A configuração do espaço de tópicos também proporciona controlo de acesso granular, permitindo que controle a autorização de cada cliente dentro de um grupo de clientes para publicar ou subscrever o seu próprio tema. Para mais informações, veja como os modelos de tópicos fornecem controlo de acesso granular.
Configuração do espaço tópico
Um espaço temático 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, consulte os termos-chave dos metadados do cliente. -
${client.attributes.x}: Representa um atributo atribuído a um cliente quando este é criado ou atualizado, ondexé a cadeia exata da chave de atributo. Por exemplo, se um cliente tiver o atributoarea:section1, o modeloarea/${client.attributes.area}/telemetryde tópico permite apenas que clientes com esse atributo publiquem sobre o temaarea/section1/telemetryMQTT . Para mais informações, consulte clientes MQTT.
Observação
- Os tópicos que começam
$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 do que um segmento. Por exemplo, o modelo
machines/${client.authenticationName|.factory1}/tempde tópico corresponde a tópicos comomachines/machine1.factory1/tempemachines/machine2.factory1/temp. - Os modelos de tópicos usam os caracteres especiais
$e|, que poderá ser necessário escapar, consoante a shell que utilizar. Por exemplo, no PowerShell, escape estes caracteres conforme ilustrado nos exemplos seguintes:"vehicles/${client.authenticationName|dollar}/#"vehicles/${client.authenticationName"|"dollar}/#
Para criar um espaço de tópicos no portal do Azure ou com a CLI do Azure, consulte Publicar e subscrever mensagens MQTT. Quando nomear um espaço temático, use estas regras:
- O nome de um espaço de tópico pode ter entre 3 a 50 caracteres.
- O nome de um espaço de tópico pode incluir caracteres alfanuméricos e hífens (
-), sem espaços.
O seguinte exemplo de CLI do Azure cria um espaço temático que tem dois modelos de tópicos:
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 em espaço de tópicos podem demorar alguns minutos a propagar-se.