Espacios de temas en la característica MQTT broker de Azure Event Grid
Un espacio de temas representa varios temas mediante un conjunto de plantillas de tema. Las plantillas de tema son una extensión de filtros MQTT que admiten variables, junto con los caracteres comodín de MQTT. Cada espacio de temas representa los temas MQTT que el mismo conjunto de clientes deben usar para comunicarse.
Los espacios de temas se usan para simplificar la administración del control de acceso, ya que permite conceder acceso de publicación o suscripción a un grupo de temas a la vez en lugar de administrar el acceso para cada tema individual. Para publicar o suscribirse a cualquier tema MQTT, debe hacer lo siguiente:
- Cree un recurso de cliente para cada cliente que necesite comunicarse a través de MQTT.
- Cree un grupo de clientes que incluya los clientes que necesitan acceso para publicar o suscribirse en el mismo tema MQTT.
- Cree un espacio de temas que incluya una plantilla de tema que represente el filtro de tema o tema previsto.
- Cree un enlace de permisos para conceder al grupo de clientes acceso para publicar o suscribirse al espacio de temas.
Filtro de tema MQTT:
Un filtro de tema MQTT es un tema MQTT que puede incluir caracteres comodín para uno o varios de sus segmentos, lo que le permite coincidir con varios temas MQTT. Se usa para simplificar las solicitudes de suscripción, ya que un filtro de tema puede coincidir con varios temas.
MQTT broker admite todos los caracteres comodín MQTT definidos por la especificación MQTT de la siguiente manera:
- +: que coincide con un único segmento.
- Por ejemplo, el filtro de temas: "machines/+/alert" coincide con los temas siguientes:
- machines/temp/alert
- machines/humidity/alert
- Por ejemplo, el filtro de temas: "machines/+/alert" coincide con los temas siguientes:
- #: que coincide con cero o más segmentos al final del tema.
- Por ejemplo, el filtro de temas: "machines/#" coincide con los temas siguientes:
- machines
- machines/temp
- machines/humidity
- machines/temp/alert etc.
- Por ejemplo, el filtro de temas: "machines/#" coincide con los temas siguientes:
Para obtener más información sobre los caracteres comodín, consulte Caracteres comodín de tema en la especificación MQTT.
Plantillas de tema
Las plantillas de tema son una extensión de filtros MQTT que admiten variables, junto con los caracteres comodín de MQTT. La configuración de espacios de temas también proporciona un control de acceso pormenorizado, ya que permite controlar la autorización de cada cliente dentro de un grupo de clientes para publicar o suscribirse a su propio tema. Obtenga más información sobre cómo las plantillas de tema proporcionan un control de acceso granular.
Configuración del espacio de tema:
Los espacios de temas puede agrupar hasta 10 plantillas de tema. Las plantillas de tema admiten caracteres comodín MQTT (+ y #) y las siguientes variables:
- ${client.authenticationName}: esta variable representa el nombre de autenticación del cliente. Obtenga más información sobre los nombres de autenticación de cliente.
- ${client.attributes.x}: esta variable representa un atributo asignado a un cliente durante la creación o actualización del cliente. Es decir, "x" sería igual a la cadena exacta de la clave de atributo. Por ejemplo, si un cliente tiene el atributo, una plantilla de tema "area/${client.attributes.area}/telemetry" solo permite a los clientes con el atributo de cliente> "area:section1" publicar en el tema MQTT "area/section1/telemetry". Obtenga más información sobre los atributos de cliente.
Nota:
Los temas que comienzan por $ están reservados para uso interno.
Una variable puede representar una parte de un segmento o un segmento completo, pero no puede abarcar más de un segmento. Por ejemplo, una plantilla de tema podría incluir "machines/${client.authenticationName|. factory1}/temp" y coincide con los temas "machines/machine1.factory1/temp", "machines/machine2.factory1/temp", etc.
Las plantillas de tema usan caracteres especiales $ y | y deben escaparse de forma diferente en función del shell que se usa. En PowerShell, $ se puede escapar con vehicles/${dollar}telemetry/#. Si usa PowerShell, puede escapar estos caracteres especiales, como se muestra en los ejemplos siguientes:
"vehicles/${client.authenticationName|dollar}/#"
vehicles/${client.authenticationName"|"dollar}/#
Configuración de Azure Portal:
Siga estos pasos para crear un espacio de temas:
- En Azure Portal, vaya a su espacio de nombres.
- En Espacios de temas, seleccione +Espacio de temas.
- Asigne un nombre al espacio de tema.
Nota:
- El nombre del espacio de tema puede tener entre 3 y 50 caracteres.
- El nombre del espacio de tema puede incluir caracteres alfanuméricos, guiones(-) y no debe tener espacios.
- Agregue al menos una plantilla de tema seleccionando +Agregar plantilla de tema.
- Seleccione Crear.
Configuración de la CLI de Azure:
Use los comandos siguientes para crear un espacio de temas:
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:
Las actualizaciones de la configuración del espacio de tema pueden tardar un par de minutos en propagarse.
Pasos siguientes:
Obtenga más información sobre la autorización y la autenticación: