Przestrzenie tematów w brokerze MQTT usługi Azure Event Grid

Przestrzeń tematyczna reprezentuje wiele tematów poprzez zestaw szablonów tematów. Szablony tematów rozszerzają filtry tematów w MQTT o obsługę zmiennych, oprócz standardowych znaków wieloznacznych MQTT. Każda przestrzeń tematyczna reprezentuje tematy MQTT, z których korzysta ten sam zestaw klientów do komunikacji.

Przestrzenie tematyczne upraszczają kontrolę dostępu, pozwalając na jednoczesne publikowanie lub subskrypcję dostępu do grupy tematów, zamiast zarządzać dostępem dla każdego tematu osobno. Model kontroli dostępu łączy cztery zasoby, aby przyznać grupie klientów dostęp do publikowania lub subskrypcji przestrzeni tematycznej:

  • Klient: Reprezentuje urządzenie lub aplikację komunikującą się przez MQTT.
  • Grupa klientów: Grupuje klientów, którzy potrzebują tego samego dostępu do tego samego zestawu tematów MQTT.
  • Przestrzeń tematyczna: Grupuje jeden lub więcej szablonów tematów reprezentujących zamierzone tematy lub filtry tematyczne.
  • Powiązanie uprawnień: Przyznaje grupie klientów dostęp do publikowania lub subskrypcji w przestrzeni tematów.

Więcej informacji można znaleźć w artykule Kontrola dostępu dla klientów MQTT.

Ten artykuł wyjaśnia, jak filtry tematów MQTT, szablony tematów oraz konfiguracja przestrzeni tematycznej współgrają ze sobą, abyś mógł grupować powiązane tematy i efektywnie zarządzać dostępem klienta.

Filtry tematów MQTT

Filtr tematu MQTT to temat MQTT, który może zawierać symbole wieloznaczne w co najmniej jednym ze swoich segmentów, dzięki czemu pasuje do wielu tematów MQTT. Filtry tematyczne upraszczają prośby o subskrypcję, ponieważ jeden filtr tematyczny może pasować do wielu tematów.

Broker MQTT obsługuje wszystkie dzikie karty MQTT zdefiniowane przez specyfikację MQTT:

  • + odpowiada jednemu segmentowi. Na przykład filtr machines/+/alert tematów odpowiada tym tematom:
    • machines/temp/alert
    • machines/humidity/alert
  • # dopasowuje zero lub więcej segmentów na końcu tematu. Na przykład filtr machines/# tematów odpowiada tym tematom:
    • machines
    • machines/temp
    • machines/humidity
    • machines/temp/alert

Więcej informacji o symbolach wieloznacznych można znaleźć w sekcji Symbole wieloznaczne tematów w specyfikacji MQTT.

Szablony tematów

Szablony topików rozszerzają filtry topików MQTT o obsługę zmiennych, poza symbolami wieloznacznymi MQTT. Konfiguracja przestrzeni tematycznej zapewnia również szczegółową kontrolę dostępu, pozwalając kontrolować autoryzację każdego klienta w grupie klienta do publikowania lub subskrypcji własnego tematu. Więcej informacji znajdziesz w tym, jak szablony tematów zapewniają szczegółową kontrolę dostępu.

Konfiguracja przestrzeni tematycznej

Przestrzeń tematyczna może grupować do 10 szablonów tematów. Szablony tematów obsługują dzikie karty MQTT (+ i #) oraz następujące zmienne:

  • ${client.authenticationName}: Reprezentuje nazwę uwierzytelniającą klienta. Więcej informacji można znaleźć w kluczowych terminach metadanych klientów.
  • ${client.attributes.x}: Reprezentuje atrybut przypisany klientowi podczas jego tworzenia lub aktualizacji, gdzie x jest dokładnym ciągiem klucza atrybutu. Na przykład, jeśli klient posiada atrybut area:section1, szablon area/${client.attributes.area}/telemetry tematu pozwala publikować tylko klientom z tym atrybutem na temacie area/section1/telemetryMQTT . Więcej informacji można znaleźć w artykule o klientach MQTT.

Uwaga / Notatka

  • Tematy, które zaczynają się od tego, $ są zarezerwowane dla użytku wewnętrznego.
  • Zmienna może reprezentować część segmentu lub cały segment, ale nie może obejmować więcej niż jednego segmentu. Na przykład szablon machines/${client.authenticationName|.factory1}/temp tematu odpowiada takim jak machines/machine1.factory1/temp i machines/machine2.factory1/temp.
  • Szablony tematów używają znaków $ specjalnych i |, które możesz potrzebować uniknąć, w zależności od używanej powłoki. Na przykład w programie PowerShell poprzedź te znaki znakiem ucieczki, jak pokazano w poniższych przykładach:
    • "vehicles/${client.authenticationName|dollar}/#"
    • vehicles/${client.authenticationName"|"dollar}/#

Aby utworzyć przestrzeń tematyczną w portalu Azure lub za pomocą Azure CLI, zobacz Publikuj i subskrybuj komunikaty MQTT. Nazywając przestrzeń tematyczną, stosuj następujące zasady:

  • Nazwa przestrzeni tematycznej może mieć od 3 do 50 znaków.
  • Nazwa przestrzeni tematu może zawierać znaki alfanumeryczne i łączniki (-), bez spacji.

Zrzut ekranu konfiguracji przestrzeni tematów w portalu Azure.

Poniższy przykład Azure CLI tworzy przestrzeń tematyczną, która ma dwa szablony tematów:

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

Uwaga / Notatka

Aktualizacje konfiguracji w przestrzeni tematycznej mogą trwać kilka minut, by się rozprzestrzenić.