MQTT-berichten routeren in Azure Event Grid
Met Event Grid kunt u uw MQTT-berichten omleiden naar Azure-services of webhooks voor verdere verwerking. Daarom kunt u end-to-end-oplossingen bouwen met behulp van uw IoT-gegevens voor gegevensanalyse, opslag en visualisaties, onder andere gebruiksvoorbeelden.
Hoe kan ik de routeringsfunctie gebruiken?
Door de berichten van uw clients te routeren naar een Azure-service of uw aangepaste eindpunt, kunt u de voordelen van deze gegevens maximaliseren. Hier volgen enkele van de volgende gebruiksvoorbeelden om te profiteren van deze functie:
- Gegevensanalyse: extraheert en analyseert de gerouteerde berichten van uw clients om uw oplossing te optimaliseren. Analyseer bijvoorbeeld de telemetrie van uw machines om te voorspellen wanneer onderhoud moet worden gepland voordat er fouten optreden om vertragingen en verdere schade te voorkomen.
- Serverloze toepassingen: een serverloze functie activeren op basis van de gerouteerde berichten van uw clients. Wanneer een bewegingssensor bijvoorbeeld een beweging detecteert, stuurt u een melding naar beveiligingspersoneel om dit aan te pakken.
- Gegevensvisualisaties: bouw visualisaties van de gerouteerde gegevens van uw clients om de gegevens eenvoudig weer te geven en te begrijpen en trends en uitbijters te markeren.
Routeringsconfiguratie:
Met de routeringsconfiguratie kunt u al uw MQTT-berichten van uw clients verzenden naar een Event Grid-naamruimteonderwerp of een aangepast Event Grid-onderwerp. Zodra de berichten in het onderwerp staan, kunt u een gebeurtenisabonnement configureren om de berichten van het onderwerp te gebruiken. Gebruik de volgende stappen op hoog niveau om deze configuratie te bereiken:
- Onderwerp naamruimte als routeringsbestemming:
- Maak een Event Grid-naamruimteonderwerp waarin alle MQTT-berichten worden gerouteerd.
- Maak een gebeurtenisabonnement van het pushtype om deze berichten te routeren naar een van de ondersteunde Azure-services of een aangepast webhooks of een gebeurtenisabonnement van het wachtrijtype om de berichten rechtstreeks vanuit het naamruimteonderwerp via uw toepassing op te halen.
- Stel de routeringsconfiguratie in die verwijst naar het onderwerp dat u in de eerste stap hebt gemaakt.
- Aangepast onderwerp als routeringsbestemming:
- Maak een aangepast Event Grid-onderwerp waarin alle MQTT-berichten worden gerouteerd. Dit onderwerp moet voldoen aan de aangepaste Event Grid-onderwerpvereisten voor routering
- Maak een Event Grid-gebeurtenisabonnement om deze berichten te routeren naar een van de ondersteunde Azure-services of een aangepast eindpunt.
- Stel de routeringsconfiguratie in die verwijst naar het onderwerp dat u in de eerste stap hebt gemaakt.
Notitie
Als u openbare netwerktoegang op de naamruimte uitschakelt, mislukt de MQTT-routering.
Verschil tussen naamruimteonderwerpen en aangepaste onderwerpen als routeringsbestemming
In de volgende tabel ziet u het verschil tussen naamruimteonderwerpen en aangepaste onderwerpen als routeringsbestemming. Zie Quota en limieten voor een gedetailleerde uitsplitsing van welke quota en limieten zijn opgenomen in elke Event Grid-resource.
Vergelijkingspunt | Onderwerp naamruimte | Aangepast onderwerp |
---|---|---|
Doorvoer | Hoog, tot 40 MB/s (inkomend) en 80 MB/s (uitgaand verkeer) | Laag, maximaal 5 MB/s (inkomend en uitgaand verkeer) |
Pull-levering | Ja | |
Push-levering naar Event Hubs | Ja | Ja |
Pushlevering naar Azure-services (Functions, Webhooks, Service Bus-wachtrijen en -onderwerpen, hybride verbindingen en opslagwachtrijen doorsturen) | Ja | |
Bewaartermijn voor berichten | 7 dagen | 1 dag |
Vereiste voor roltoewijzing | Niet nodig omdat de MQTT-broker en het onderwerp van de naamruimte zich onder dezelfde naamruimte bevinden | Vereist omdat de naamruimte die als host fungeert voor de MQTT-brokerfunctionaliteit en het aangepaste onderwerp verschillende resources zijn |
Aangepaste Event Grid-onderwerpvereisten voor routering
Het aangepaste Event Grid-onderwerp dat wordt gebruikt voor routering, moet voldoen aan de volgende vereisten:
- Deze moet worden ingesteld voor het gebruik van het cloud-gebeurtenisschema v1.0
- Deze moet zich in dezelfde regio bevinden als de naamruimte.
- U moet de rol 'Event Grid-gegevenszender' toewijzen aan uzelf of aan de geselecteerde beheerde identiteit in het aangepaste Event Grid-onderwerp voordat de routeringsconfiguratie wordt toegepast.
- Ga in de portal naar de gemaakte Event Grid-onderwerpresource.
- Selecteer een roltoewijzing toevoegen in het menu-item Toegangsbeheer (IAM).
- Selecteer op het tabblad Rol de optie 'Afzender van Event Grid-gegevens' en selecteer vervolgens Volgende.
- Selecteer +Leden op het tabblad Leden en typ vervolgens uw AD-gebruikersnaam in het vak Selecteren dat wordt weergegeven (bijvoorbeeld user@contoso.com).
- Selecteer uw AD-gebruikersnaam en selecteer vervolgens Beoordelen en toewijzen
Configuratie van Azure Portal
Gebruik de volgende stappen om routering te configureren:
- Ga naar uw naamruimte in Azure Portal.
- Schakel routering in onder Routering in.
- Selecteer onder onderwerptype de optie Naamruimteonderwerp of Aangepast onderwerp
- Selecteer onder onderwerp het onderwerp dat u hebt gemaakt waar alle MQTT-berichten worden gerouteerd.
- Voor aangepaste onderwerpen toont de lijst alleen de onderwerpen die voldoen aan de aangepaste Event Grid-onderwerpvereisten voor routering
- Als aangepast onderwerp is geselecteerd, wordt de sectie Managed Identity for Delivery weergegeven. Selecteer een van de volgende opties voor de identiteit die wordt gebruikt om de MQTT-broker te verifiëren tijdens het leveren van de MQTT-berichten aan het aangepaste onderwerp:
- Geen: in dit geval moet u de rol 'Event Grid-gegevenszender' aan uzelf toewijzen in het aangepaste onderwerp.
- Door het systeem toegewezen identiteit: in dit geval moet u door het systeem toegewezen identiteit inschakelen voor de naamruimte als een vereiste en de rol 'EventGrid-gegevenszender' toewijzen aan de door het systeem toegewezen identiteit in het aangepaste onderwerp.
- Door de gebruiker toegewezen identiteit: in dit geval moet u door de gebruiker toegewezen identiteit inschakelen in de naamruimte als een vereiste en de rol 'EventGrid-gegevenszender' toewijzen aan de geselecteerde identiteit in het aangepaste onderwerp.
- Als door de gebruiker toegewezen identiteit is geselecteerd, wordt er een vervolgkeuzelijst weergegeven waarmee u de gewenste identiteit kunt selecteren.
- Selecteer Toepassen.
Voor configuratie-instructies voor verrijkingen gaat u naar de configuratie van de verrijkingsportal.
Azure CLI-configuratie
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
},
}
}
Ga voor configuratie-instructies voor verrijkingen naar de CLI-configuratie van Verrijking.
MQTT-berichtrouteringsgedrag
Tijdens het routeren van MQTT-berichten naar aangepaste onderwerpen, biedt Event Grid duurzame levering omdat het elk bericht ten minste één keer per keer probeert te bezorgen. Als er een fout optreedt, probeert Event Grid de bezorging opnieuw uit of wordt het bericht dat bedoeld is om te worden gerouteerd, afgebroken. Event Grid garandeert geen order voor levering van gebeurtenissen, zodat abonnees ze mogelijk niet in orde kunnen ontvangen.
De volgende tabel beschrijft het gedrag van MQTT-berichtroutering op basis van verschillende fouten.
Error | Foutbeschrijving | Gedrag |
---|---|---|
TopicNotFoundError | Het aangepaste onderwerp dat is geconfigureerd voor het ontvangen van alle door MQTT gerouteerde berichten, is verwijderd. | Event Grid verwijdert het MQTT-bericht dat bedoeld is om te worden gerouteerd. |
AuthenticationError | De rol Event Grid-gegevenszender voor het aangepaste onderwerp dat is geconfigureerd als de bestemming voor door MQTT gerouteerde berichten, is verwijderd. | Event Grid verwijdert het MQTT-bericht dat bedoeld is om te worden gerouteerd. |
TooManyRequests | Het aantal door MQTT gerouteerde berichten per seconde overschrijdt de publicatielimiet voor het aangepaste onderwerp. | Event Grid probeert het MQTT-bericht opnieuw te routeren. |
ServiceError | Een onverwachte serverfout vanwege de operationele reden van een server. | Event Grid probeert het MQTT-bericht opnieuw te routeren. |
Tijdens nieuwe pogingen gebruikt Event Grid een beleid voor exponentieel uitstel voor MQTT-berichtroutering. Event Grid probeert de levering volgens de volgende planning opnieuw uit te voeren op basis van best effort:
- 10 seconden
- 30 seconden
- 1 minuut
- 5 minuten
- 10 minuten
- 30 minuten
- 1 uur
- 3 uur
- 6 uur
- Om de 12 uur
Als een gerouteerd MQTT-bericht dat in de wachtrij is geplaatst voor opnieuw afspelen is geslaagd, probeert Event Grid het bericht op basis van best effort te verwijderen uit de wachtrij voor opnieuw proberen, maar er kunnen nog steeds duplicaten worden ontvangen.
Volgende stappen:
Gebruik de volgende artikelen voor meer informatie over routering:
Quickstart:
- Zelfstudie: MQTT-berichten routeren naar Azure Event Hubs met behulp van naamruimteonderwerpen
- Zelfstudie: MQTT-berichten routeren naar Azure Functions met behulp van aangepaste onderwerpen