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 door gebruik te maken van uw IoT-gegevens voor gegevensanalyse, opslag en visualisaties, onder andere gebruiksvoorbeelden.

Diagram of the MQTT message routing.

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.

Diagram of the MQTT message routing to namespace topics.

Diagram of the MQTT message routing to custom topics.

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 (in preview) 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 'EventGrid-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.
  • 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 'EventGrid Data Sender' toewijzen aan uzelf 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.

Screenshot showing the routing configuration through the portal.

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 EventGrid-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:

Concepten: