Megosztás a következőn keresztül:


Az MQTT-hez irányított üzenetek gazdagításai

A bővítési támogatással legfeljebb 20 egyéni kulcs-érték tulajdonságot adhat hozzá az üzenetekhez, mielőtt elküldené őket az Event Grid egyéni témakörének. Ezek a bővítések lehetővé teszik a következők elvégzését:

  • Környezetfüggő adatok hozzáadása az üzenetekhez. Ha például az üzenetet az ügyfél nevével vagy a névtér nevével bővíti, az a végpontoknak információt adhat az üzenet forrásáról.
  • Csökkentse a végpontok számítási terhelését. Ha például gazdagítja az üzenetet az MQTT-közzétételi kérelem hasznos adatformátum-jelzőjével, vagy a tartalomtípus tájékoztatja a végpontokat az üzenet hasznos adatainak feldolgozásáról anélkül, hogy először több elemzőt próbálna ki.
  • Szűrje az átirányított üzeneteket az Event Grid-esemény-előfizetéseken a hozzáadott adatok alapján. Egy ügyfélattribútum kibővítésével például szűrheti a végpontra irányítandó üzeneteket a különböző attribútum értékei alapján.

Konfiguráció

Bővítési kulcs:

A bővítési kulcs egy sztring, amelynek meg kell felelnie az alábbi követelményeknek:

  • Csak kisbetűs alfanumerikák: csak (a-z) és (0-9)
  • Nem lehet specversion, id, time, type, source, subject, datacontenttype, dataschema, datavagy data_base64.
  • Nem kezdődhet a .azsp
  • Nem lehet duplikálni.
  • Legfeljebb 20 karakter hosszúságú lehet.

Bővítési érték:

A bővítési érték lehet statikus sztring statikus gazdagításokhoz, vagy az ügyfélattribútumokat vagy a dinamikus bővítés MQTT üzenettulajdonságait képviselő támogatott értékek egyike. A bővítési értékek legfeljebb 128 karakter hosszúságúak lehetnek. Az alábbi lista a támogatott értékeket tartalmazza:

Ügyfélattribútumok

  • ${client.authenticationName}: a közzétételi ügyfél neve.
  • ${client.attributes.x}: a közzétételi ügyfél attribútuma, ahol x az attribútumkulcs neve.

MQTT-tulajdonságok

  • ${mqtt.message.userProperties.x}: felhasználói tulajdonságok az MQTTv5 PUBLISH csomagban, ahol x a felhasználói tulajdonságkulcs neve
    • Típus: sztring
    • Használja inkább a következő változóformátumot, ha a felhasználói tulajdonság ${mqtt.message.userProperties[x]} speciális karaktereket tartalmaz. Továbbra is meg kell menekülnie egy aposztróftól és fordított perjelből az alábbiak szerint: a "PN\t" pedig "PN\t" lesz.
  • ${mqtt.message.topicName}: a témakör az MQTT PUBLISH csomagban.
    • Típus: sztring
  • ${mqtt.message.responseTopic}: a válasz témaköre az MQTTv5 PUBLISH csomagban.
    • Típus: sztring
  • ${mqtt.message.correlationData}: az MQTTv5 PUBLISH csomag korrelációs adatai.
    • Típus: bináris
  • ${mqtt.message.pfi}: a hasznos adatformátum jelzője az MQTTv5 PUBLISH csomagban.
    • Típus: egész szám

Az Azure Portal konfigurálása

Az útválasztás bővítésének konfigurálásához kövesse az alábbi lépéseket:

  1. Lépjen a névtérre az Azure Portalon.
  2. Az Útválasztás területen ellenőrizze az útválasztás engedélyezését.
  3. Az útválasztási témakör alatt válassza ki azt az Event Grid-témakört, amelyet az összes MQTT-üzenet átirányítására hozott létre.
  4. Az Üzenetdúsítások csoportban válassza a + Bővítés hozzáadása lehetőséget.
  5. Adjon hozzá legfeljebb 20 kulcs-érték párot, és válassza ki a típusukat megfelelően.
  6. Válassza az Alkalmazás lehetőséget.

Screenshot showing the routing enrichment configuration through the portal.

Az útválasztási konfigurációval kapcsolatos további információkért tekintse meg az Azure Portal útválasztási konfigurációját.

Az Azure CLI konfigurálása

A névtér létrehozása/frissítése során használja a parancsot és a hasznos adatokat az útválasztási bővítés konfigurálásához:

az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --api-version 2023-06-01-preview --properties @./resources/NS.json

NS.json

{
  "properties": {
    "topicSpacesConfiguration": {
        "state": "Enabled",
        "routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid Topic name>",
        "routingEnrichments": {
            "static": [
                {
                    "key": "namespaceid",
                    "value": "123",
                    "valueType": "string"
                }
            ],
            "dynamic": [
                {
                    "key": "clientname",
                    "value": "${client.authenticationName}"
                },
                {
                    "key": "clienttype",
                    "value": "${client.attributes.type}"
                },
                {
                    "key": "address",
                    "value": "${mqtt.message.userProperties['client.address']}"
                },
                {
                    "key": "region",
                    "value": "${mqtt.message.userProperties.location}"
                },
                {
                    "key": "mqtttopic",
                    "value": "${mqtt.message.topicName}"
                },
                {
                    "key": "mqttresponsetopic",
                    "value": "${mqtt.message.responseTopic}"
                },
                {
                    "key": "mqttcorrelationdata",
                    "value": "${mqtt.message.correlationData}"
                },
                {
                    "key": "mqttpfi",
                    "value": "${mqtt.message.pfi}"
                }
            ]
        }
    }
},
"location": "eastus2euap",
"tags": {},
}

Az útválasztási konfigurációval kapcsolatos további információkért tekintse meg az Azure CLI-konfiguráció útválasztását.

Példakimenet

A következő CloudEvent egy MQTTv5-üzenet mintakimenete PFI=0-val az előző bővítési konfiguráció alkalmazása után:

{
    "specversion": "1.0",
	"id": "9aeb0fdf-c01e-0131-0922-9eb54906e20", // unique id stamped by the service
	"time": "2019-11-18T15:13:39.4589254Z", // timestamp when messages was received by the service
	"type": "MQTT.EventPublished", // set type for all MQTT messages enveloped by the service
	"source": "testnamespace", // namespace name
	"subject": "campus/buildings/building17", // topic of the MQTT publish request
	"namespaceid": "123", // static enrichment
	"clientname": "client1", // dynamic enrichment of the name of the publishing client
	"clienttype": "operator", // dynamic enrichment of an attribute of the publishing client
	"address": "1 Microsoft Way, Redmond, WA 98052", // dynamic enrichment of a user property in the MQTT publish request
	"region": "North America", // dynamic enrichment of another user property in the MQTT publish request
	"mqtttopic": "campus/buildings/building17", // dynamic enrichment of the topic of the MQTT publish request
	"mqttresponsetopic": "campus/buildings/building17/response", // dynamic enrichment of the response topic of the MQTT publish request
	"mqttcorrelationdata": "cmVxdWVzdDE=", // dynamic enrichment of the correlation data of the MQTT publish request encoded in base64
	"mqttpfi": 0, // dynamic enrichment of the payload format indicator of the MQTT publish request
	"datacontenttype": "application/octet-stream", //content type of the MQTT publish request
	"data_base64": 
    {
	    IlRlbXAiOiAiNzAiLAoiaHVtaWRpdHkiOiAiNDAiCg==
	}
}

Speciális esetek kezelése:

  • Meghatározatlan ügyfélattribútumok/felhasználói tulajdonságok: ha egy dinamikus bővítés nem létező ügyfélattribútumra/felhasználói tulajdonságra mutat, akkor a bővítés tartalmazza a megadott kulcsot egy érték üres sztringjével. Például emptyproperty: "".
  • Tömbök: Az ügyfélattribútumokban és az ismétlődő felhasználói tulajdonságokban lévő tömbök vesszővel tagolt sztringgé alakulnak. Ha például a bővített ügyfélattribútum "tömb" értékre van állítva: "value1", "value2", "value3", akkor az eredményként kapott gazdagított tulajdonság a következő lesz array: value1,value2,value3. Egy másik példa: ha ugyanaz az MQTT-közzétételi kérelem a következő felhasználói tulajdonságokkal rendelkezik > : "userproperty1": "value1", "userproperty1": "value2", az eredményként kapott gazdagított tulajdonság a következő lesz userproperty1: value1,value2.

Következő lépések:

Az útválasztásról az alábbi cikkekben olvashat bővebben:

Gyorsútmutató:

Fogalmak: