MQTT-ügyfelek életciklus-eseményei
Az ügyfél életciklus-eseményei lehetővé teszik, hogy az alkalmazások reagáljanak az ügyfélkapcsolat állapotával vagy az ügyfélerőforrás-műveletekkel kapcsolatos eseményekre. Lehetővé teszi, hogy:
- Az ügyfelek kapcsolati állapotának figyelése. Létrehozhat például egy alkalmazást, amely elemzi az ügyfelek kapcsolatait a viselkedés optimalizálása érdekében.
- Reagáljon egy kockázatcsökkentő művelettel az ügyfél leválasztása érdekében. Létrehozhat például egy alkalmazást, amely automatikus kárenyhítési folyamatot kezdeményez, vagy létrehozhat egy támogatási jegyet minden alkalommal, amikor az ügyfél leválasztása történik.
- Nyomon követheti az ügyfelek által csatolt névteret. Győződjön meg például arról, hogy az ügyfelek a feladatátvétel kezdeményezése után a megfelelő névtérhez csatlakoznak.
Eseménytípusok
Az Event Grid-névtér a következő eseménytípusokat teszi közzé:
Esemény típusa | Ismertetés |
---|---|
Microsoft.EventGrid.MQTTClientSession Csatlakozás ed | Közzétéve, ha egy MQTT-ügyfél munkamenete csatlakozik az Event Gridhez. |
Microsoft.EventGrid.MQTTClientSessionDisconnected | Közzétéve, ha egy MQTT-ügyfél munkamenete le van választva az Event Gridről. |
Microsoft.EventGrid.MQTTClientCreatedOrUpdated | MQTT-ügyfél létrehozásakor vagy frissítésekor jelenik meg az Event Grid-névtérben. |
Microsoft.EventGrid.MQTTClientDeleted | Akkor jelenik meg, ha egy MQTT-ügyfél törlődik az Event Grid-névtérből. |
Eseményséma
Az ügyfél életciklus-eseményei minden információt megadnak a csatlakoztatott vagy leválasztott ügyfélről és munkamenetről. Emellett egy leválasztásireazont is biztosít, amelyet diagnosztikai forgatókönyvekhez használhat, mivel lehetővé teszi az automatikus enyhítési műveletek végrehajtását.
Ez a mintaesemény egy esemény sémáját mutatja be, amely akkor merült fel, amikor egy MQTT-ügyfél munkamenete egy Event Gridhez csatlakozik:
[{
"specversion": "1.0",
"id": "5249c38a-a048-46dd-8f60-df34fcdab06c",
"time": "2023-07-29T01:23:49.6454046Z",
"type": "Microsoft.EventGrid.MQTTClientSessionConnected",
"source": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myrg/providers/Microsoft.EventGrid/namespaces/myns",
"subject": "clients/client1/sessions/session1",
"data": {
"namespaceName": "myns",
"clientAuthenticationName": "client1",
"clientSessionName": "session1",
"sequenceNumber": 1
}
}]
Ez a mintaesemény egy esemény sémáját mutatja be, amely akkor merült fel, amikor egy MQTT-ügyfél munkamenete leválasztva van az Event Gridről:
[{
"specversion": "1.0",
"id": "e30e5174-787d-4e19-8812-580148bfcf7b",
"time": "2023-07-29T01:27:40.2446871Z",
"type": "Microsoft.EventGrid.MQTTClientSessionDisconnected",
"source": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myrg/providers/Microsoft.EventGrid/namespaces/myns",
"subject": "clients/client1/sessions/session1",
"data": {
"namespaceName": "myns",
"clientAuthenticationName": "client1",
"clientSessionName": "session1",
"sequenceNumber": 1,
"disconnectionReason": "ClientInitiatedDisconnect"
}
}]
Ez a mintaesemény egy MQTT-ügyfél létrehozásakor vagy frissítésekor az Event Grid-névtérben létrehozott vagy frissített esemény sémáját mutatja be:
[{
"specversion": "1.0",
"id": "383d1562-c95f-4095-936c-688e72c6b2bb",
"time": "2023-07-29T01:14:35.8928724Z",
"type": "Microsoft.EventGrid.MQTTClientCreatedOrUpdated",
"source": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myrg/providers/Microsoft.EventGrid/namespaces/myns",
"subject": "clients/client1",
"data": {
"createdOn": "2023-07-29T01:14:34.2048108Z",
"updatedOn": "2023-07-29T01:14:34.2048108Z",
"namespaceName": "myns",
"clientName": "client1",
"clientAuthenticationName": "client1",
"state": "Enabled",
"attributes": {
"attribute1": "value1"
}
}
}]
Ez a mintaesemény egy MQTT-ügyfélnek az Event Grid-névtérből való törlésekor létrehozott esemény sémáját mutatja be:
[{
"specversion": "1.0",
"id": "2a93aaf9-66c2-4f8e-9ba3-8d899c10bf17",
"time": "2023-07-29T01:30:52.5620566Z",
"type": "Microsoft.EventGrid.MQTTClientDeleted",
"source": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myrg/providers/Microsoft.EventGrid/namespaces/myns",
"subject": "clients/client1",
"data": {
"namespaceName": "myns",
"clientName": "client1",
"clientAuthenticationName": "client1"
}
}]
Leválasztási okok:
Az alábbi lista a disconnectionReason különböző értékeit és azok leírását ismerteti:
Leválasztási ok | Leírás |
---|---|
ClientAuthenticationError | az ügyfél bármilyen hitelesítési okból megszakadt (például a tanúsítvány lejárt, az ügyfél le lett tiltva, vagy az ügyfél konfigurációja megváltozott) |
ClientAuthorizationError | az ügyfél bármilyen engedélyezési okból megszakadt (például a témakörtérek, engedélykötések vagy ügyfélcsoportok konfigurációjának módosítása miatt) |
ClientError | az ügyfél rossz kérést küldött, vagy az egyik nem támogatott szolgáltatást használta, amely a szolgáltatás által a kapcsolat megszakadását eredményezte. |
ClientInitiatedDisconnect | az ügyfél egy MQTT-hez tartozó DISCONNECT-csomagon vagy a WebSocketen keresztüli MQTT szoros keretén keresztül kezdeményezi a kecses leválasztást. |
Csatlakozás ionLost | az ügyfél-kiszolgáló kapcsolat megszakad. |
IpForbidden | az ügyfél IP-címét ip-szűrő vagy privát kapcsolatok konfigurálása blokkolja. |
QuotaExceeded | az ügyfél túllépte az egy vagy több olyan szabályozási korlátot, amely a szolgáltatás által a kapcsolat megszakadását eredményezte. |
ServerError | a kapcsolat váratlan kiszolgálóhiba miatt megszakadt |
ServerInitiatedDisconnect | a kiszolgáló bármilyen működési okból kecses leválasztást kezdeményez |
SessionOverflow | az ügyfél nem megismert QoS1-üzenetek üzenetsora elérte a korlátját, ami miatt a kiszolgáló megszakadt a kapcsolattal. |
SessionTakenOver | az ügyfél ugyanazzal a hitelesítési névvel kapcsolódott újra, ami az előző kapcsolat megszakadását eredményezte. |
Az egyes tulajdonságok részletes leírását az Event Grid-névtér eseménysémában találja.
Tipp.
Magas ingadozások kezelése a kapcsolatállapotokban: Amikor egy ügyfél leválasztási eseménye érkezik, várjon egy ideig (például 30 másodpercig), és ellenőrizze, hogy az ügyfél továbbra is offline állapotban van-e, mielőtt enyhítő műveletet hajt végre. Ez az optimalizálás javítja a gyorsan változó állapotok kezelésének hatékonyságát.
Konfiguráció
Az Azure Portal konfigurálása
Az ügyfél életciklus-eseményeinek kibocsátásához kövesse az alábbi lépéseket:
- A névtérben lépjen az Események lapra.
- Válassza az +Esemény-előfizetés lehetőséget.
- Adja meg az Event Grid-előfizetés nevét.
- Válassza ki azt az eseménysémát, amelyet az eseményfelhasználáshoz szeretne használni.
- Szűrje az eseményeket az Eseménytípusok csoportban.
- Adja meg a végpont adatait.
- Select Create.
Az Azure CLI konfigurálása
Az ügyfél életciklus-eseményeinek kibocsátásához kövesse az alábbi lépéseket:
- Rendszertémakör létrehozása
az eventgrid system-topic create --resource-group <Resource Group > --name <System Topic Name> --location \<Region> --topic-type Microsoft.EventGrid.Namespaces --source /subscriptions//resourceGroups/<Resource Group >/providers/Microsoft.EventGrid/namespaces/<Namespace Name>
- Event Grid-előfizetés létrehozása
az eventgrid system-topic event-subscription create --name <Specify Event Subscription Name> -g <Resource Group> --system-topic-name <System Topic Name> --endpoint <Endpoint>
Viselkedés:
- Nincs késési garancia az ügyfél életciklus-eseményeire. Az ügyfélkapcsolati állapot eseményei az ügyfél munkamenetének legutóbbi jelentett állapotát jelzik, nem pedig a valós idejű kapcsolat állapotát.
- Az ügyfél életciklusának ismétlődő eseményei közzétehetők.
- Az ügyfél életciklus-eseményeinek időbélyege azt jelzi, hogy a szolgáltatás mikor észlelte az eseményeket, ami eltérhet az esemény tényleges időpontjától.
- Az ügyfél életciklus-eseményeinek sorrendje nem garantált, előfordulhat, hogy az események sorrendből érkeznek. A kapcsolatállapot-események sorszáma azonban az események eredeti sorrendjének meghatározására használható.
- Az ügyfél által létrehozott vagy frissített esemény és az ügyfél által törölt esemény esetében:
- Ha rövid időn belül több állapotváltozás is történik az ügyfélerőforrásban, az ügyfél végleges állapotához egy esemény lesz kibocsátva.
- 1. példa: ha egy ügyfél létrejön, majd 3 másodpercen belül kétszer frissül, az EG csak egy MQTTClientCreatedOrUpdated eseményt bocsát ki az ügyfél metaadatainak végső értékeivel.
- 2. példa: ha egy ügyfél létrejön, majd 5 másodpercen belül törlődik, az EG csak MQTTClientDeleted eseményt bocsát ki.
Rendelési kapcsolat állapotának eseményei:
Az MQTTClientSession Csatlakozás ed és az MQTTClientSessionDisconnected események sorozatszáma az ügyfél-munkamenet kapcsolatának utolsó jelentett állapotának meghatározására használható, mivel a sorszám minden új eseménynél növekszik. Az MQTTClientSessionDisconnected szekvenciaszáma mindig megegyezik az MQTTClientSession Csatlakozás azonos kapcsolathoz tartozó esemény sorszámával. Az alábbi események és sorszámok listája például egy, az adott ügyfélhez megfelelő sorrendben lévő események mintája:
- MQTTClientSession Csatlakozás ed > "sequenceNumber": 1
- MQTTClientSessionDisconnected > "sequenceNumber": 1
- MQTTClientSession Csatlakozás ed > "sequenceNumber": 2
- MQTTClientSessionDisconnected > "sequenceNumber": 2
Íme egy mintalogika az események sorrendjéhez: Minden ügyfél esetében:
- Tárolja a sorszámot és a kapcsolat állapotát az első eseményből.
- Minden új MQTTClientSession Csatlakozás esemény esetén:
- ha az új sorszám nagyobb, mint az előző, frissítse a sorszámot és a kapcsolat állapotát az új eseménynek megfelelően.
- Minden új MQTTClientSessionDisconnected esemény esetén:
- ha az új sorszám egyenlő vagy nagyobb az előzőnél, frissítse a sorszámot és a kapcsolat állapotát az új eseménynek megfelelően.
További lépések
- A rendszertémakörökről az Azure Event Grid rendszertémakörökben olvashat bővebben
- Ha többet szeretne megtudni az ügyfél életciklusának eseménytulajdonságairól, nyissa meg az Event Gridet Event Grid-forrásként