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
,data
vagydata_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:
- Lépjen a névtérre az Azure Portalon.
- Az Útválasztás területen ellenőrizze az útválasztás engedélyezését.
- 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.
- Az Üzenetdúsítások csoportban válassza a + Bővítés hozzáadása lehetőséget.
- Adjon hozzá legfeljebb 20 kulcs-érték párot, és válassza ki a típusukat megfelelően.
- Válassza az Alkalmazás lehetőséget.
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ő leszuserproperty1
:value1,value2
.
Következő lépések:
Az útválasztásról az alábbi cikkekben olvashat bővebben:
Gyorsútmutató:
- Oktatóanyag: MQTT-üzenetek átirányítása az Azure Event Hubsba névtértémák használatával
- Oktatóanyag: MQTT-üzenetek átirányítása az Azure Functionsbe egyéni témakörök használatával