Směrování zpráv MQTT ve službě Azure Event Grid
Event Grid umožňuje směrovat zprávy MQTT do služeb Azure nebo webhooků pro další zpracování. Proto můžete vytvářet komplexní řešení pomocí dat IoT pro analýzu dat, úložiště a vizualizace mimo jiné případy použití.
Jak můžu použít funkci směrování?
Směrování zpráv z klientů do služby Azure nebo vlastního koncového bodu vám umožní maximalizovat výhody těchto dat. Tady je několik případů použití, které tuto funkci využívají:
- Analýza dat: Extrahování a analýza směrovaných zpráv z klientů za účelem optimalizace řešení Můžete například analyzovat telemetrii vašich počítačů a předpovědět, kdy naplánovat údržbu před selháním, aby nedocházelo ke zpožděním a dalším škodám.
- Bezserverové aplikace: Aktivují funkci bez serveru založenou na směrovaných zprávách z vašich klientů. Když například senzor pohybu zjistí pohyb, pošlete bezpečnostním pracovníkům oznámení, aby ho vyřešili.
- Vizualizace dat: Sestavte vizualizace směrovaných dat z vašich klientů, abyste je mohli snadno znázornit a pochopit, a také zvýraznit trendy a odlehlé hodnoty.
Konfigurace směrování:
Konfigurace směrování umožňuje odesílat všechny zprávy MQTT z klientů do tématu oboru názvů Event Gridu nebo vlastního tématu Event Gridu. Jakmile jsou zprávy v tématu, můžete nakonfigurovat odběr událostí tak, aby zprávy z tématu spotřebovávat. K dosažení této konfigurace použijte následující základní kroky:
- Téma oboru názvů jako cíl směrování:
- Vytvořte téma oboru názvů Event Gridu, ve kterém se směrují všechny zprávy MQTT.
- Vytvořte odběr události typu nabízení pro směrování těchto zpráv do jedné z podporovaných služeb Azure nebo do vlastních webhooků nebo odběru událostí typu fronty pro načtení zpráv přímo z tématu oboru názvů prostřednictvím vaší aplikace.
- Nastavte konfiguraci směrování odkazující na téma, které jste vytvořili v prvním kroku.
- Vlastní téma jako cíl směrování:
- Vytvořte vlastní téma Event Gridu, ve kterém se směrují všechny zprávy MQTT. Toto téma musí splňovat vlastní požadavky na téma Event Gridu pro směrování.
- Vytvořte odběr událostí Event Gridu pro směrování těchto zpráv do jedné z podporovaných služeb Azure nebo vlastního koncového bodu.
- Nastavte konfiguraci směrování odkazující na téma, které jste vytvořili v prvním kroku.
Poznámka:
Zakázání přístupu k veřejné síti v oboru názvů způsobí selhání směrování MQTT.
Rozdíl mezi tématy oboru názvů a vlastními tématy jako cílem směrování
Následující tabulka ukazuje rozdíl mezi tématy oboru názvů a vlastními tématy jako cílem směrování. Podrobný rozpis kvót a limitů, které jsou zahrnuté v jednotlivých prostředcích služby Event Grid, najdete v tématu Kvóty a limity.
Bod porovnání | Téma oboru názvů | Vlastní téma |
---|---|---|
Propustnost | Vysoká, až 40 MB/s (příchozí přenos) a 80 MB/s (výchozí přenos) | Nízká, až 5 MB/s (příchozí a výchozí přenos) |
Doručení vyžádané replikace | Ano | |
Nabízené doručování do služby Event Hubs | Ano | Yes |
Doručování nabízených oznámení do služeb Azure (Functions, Webhooky, fronty a témata služby Service Bus, přenosová hybridní připojení a fronty úložiště) | Ano | |
Uchovávání zpráv | 7 dní | 1 den |
Požadavek na přiřazení role | Není potřeba, protože zprostředkovatel MQTT a téma oboru názvů jsou ve stejném oboru názvů. | Vyžaduje se, protože obor názvů hostující funkce zprostředkovatele MQTT a vlastní téma jsou různé prostředky. |
Vlastní požadavky na téma Event Gridu pro směrování
Vlastní téma Event Gridu, které se používá ke směrování, musí splňovat následující požadavky:
- Musí být nastavená tak, aby používala schéma cloudových událostí v1.0.
- Musí být ve stejné oblasti jako obor názvů.
- Před uplatněním konfigurace směrování musíte přiřadit roli Odesílatel dat Event Gridu sami sobě nebo vybrané spravované identitě ve vlastním tématu Event Gridu.
- Na portálu přejděte k vytvořenému prostředku tématu Event Gridu.
- V položce nabídky Řízení přístupu (IAM) vyberte Přidat přiřazení role.
- Na kartě Role vyberte Odesílatele dat Event Gridu a pak vyberte Další.
- Na kartě Členové vyberte +Vybrat členy a zadejte své uživatelské jméno AD do pole Vybrat, které se zobrazí (například user@contoso.com).
- Vyberte své uživatelské jméno AD a pak vyberte Zkontrolovat a přiřadit.
Konfigurace webu Azure Portal
Ke konfiguraci směrování použijte následující postup:
- Na webu Azure Portal přejděte do svého oboru názvů.
- V části Směrování zaškrtněte políčko Povolit směrování.
- V části Typ tématu vyberte téma oboru názvů nebo vlastní téma.
- V části téma vyberte téma, které jste vytvořili, kde se směrují všechny zprávy MQTT.
- U vlastních témat se v seznamu zobrazují jenom témata, která splňují vlastní požadavky na téma Event Gridu pro směrování.
- Pokud jste vybrali vlastní téma, zobrazí se část Spravovaná identita pro doručování. Vyberte jednu z následujících možností pro identitu, která se používá k ověření zprostředkovatele MQTT při doručování zpráv MQTT do vlastního tématu:
- Žádné: V tomto případě musíte k vlastnímu tématu přiřadit roli Odesílatel dat Event Gridu.
- Identita přiřazená systémem: V tomto případě musíte v oboru názvů povolit identitu přiřazenou systémem jako předpoklad a přiřadit roli EventGrid Data Sender k identitě přiřazené systémem ve vlastním tématu.
- Identita přiřazená uživatelem: V tomto případě je potřeba povolit identitu přiřazenou uživatelem v oboru názvů jako předpoklad a přiřadit roli EventGrid Data Sender k vybrané identitě ve vlastním tématu.
- Pokud byla vybrána identita přiřazená uživatelem, zobrazí se rozevírací seznam, který vám umožní vybrat požadovanou identitu.
- Vyberte Použít.
Pokyny ke konfiguraci rozšíření najdete v části Konfigurace portálu pro rozšiřování.
Konfigurace Azure CLI
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": {
"inputSchema": "CloudEventSchemaV1_0",
"topicSpacesConfiguration": {
"state": "Enabled",
"routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid topic name>",
"routingIdentityInfo": {
"type": "UserAssigned", //Allowed values: None, SystemAssigned, UserAssigned
"userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>" //needed only if UserAssigned was the value of type
},
}
}
Pokyny ke konfiguraci rozšíření najdete v tématu Konfigurace rozhraní příkazového řádku pro rozšiřování.
Chování směrování zpráv MQTT
Při směrování zpráv MQTT do vlastních témat poskytuje Event Grid trvalé doručování, protože se snaží doručit každou zprávu alespoň jednou okamžitě. Pokud dojde k selhání, Event Grid buď opakuje doručení, nebo zahodí zprávu, která měla být směrována. Event Grid nezaručuje objednávku pro doručování událostí, takže předplatitelé je můžou dostat mimo objednávku.
Následující tabulka popisuje chování směrování zpráv MQTT na základě různých chyb.
Chyba | Popis chyby | Chování |
---|---|---|
TopicNotFoundError | Vlastní téma, které je nakonfigurované tak, aby přijímalo všechny směrované zprávy MQTT, bylo odstraněno. | Event Grid zahodí zprávu MQTT, která měla být směrována. |
Chyba ověřování | Byla odstraněna role Odesílatele dat služby Event Grid pro vlastní téma nakonfigurované jako cíl pro směrované zprávy MQTT. | Event Grid zahodí zprávu MQTT, která měla být směrována. |
TooManyRequests | Počet směrovaných zpráv MQTT za sekundu překračuje limit publikování pro vlastní téma. | Event Grid opakuje pokusy o směrování zprávy MQTT. |
Chyba služby | Neočekávaná chyba serveru z provozního důvodu serveru | Event Grid opakuje pokusy o směrování zprávy MQTT. |
Během opakovaných pokusů používá Event Grid pro směrování zpráv MQTT zásadu exponenciálního opakování opakování. Event Grid opakuje doručení podle následujícího plánu na základě maximálního úsilí:
- 10 sekund
- 30 sekund
- 1 min.
- 5 minut
- 10 minut
- 30 minut
- 1 hodina
- 3 hodin
- 6 hodin
- Každých 12 hodin
Pokud byla směrovaná zpráva MQTT zařazená do fronty pro opětovné nasazení úspěšná, služba Event Grid se pokusí zprávu odebrat z fronty opakování na základě nejlepšího úsilí, ale duplicitní položky se můžou stále přijímat.
Další kroky:
Další informace o směrování najdete v následujících článcích:
Rychlý start:
- Kurz: Směrování zpráv MQTT do služby Azure Event Hubs pomocí témat oboru názvů
- Kurz: Směrování zpráv MQTT do Azure Functions pomocí vlastních témat