Dela via


Routning av MQTT-meddelanden i Azure Event Grid

Med Event Grid kan du dirigera dina MQTT-meddelanden till Azure-tjänster eller webhooks för vidare bearbetning. Därför kan du skapa lösningar från slutpunkt till slutpunkt med hjälp av dina IoT-data för bland annat dataanalys, lagring och visualiseringar.

Diagram över MQTT-meddelanderoutning.

Hur kan jag använda routningsfunktionen?

Genom att dirigera meddelandena från dina klienter till en Azure-tjänst eller din anpassade slutpunkt kan du maximera fördelarna med dessa data. Följande är några av många användningsfall för att dra nytta av den här funktionen:

  • Dataanalys: extrahera och analysera de dirigerade meddelandena från dina klienter för att optimera din lösning. Du kan till exempel analysera dina datorers telemetri för att förutsäga när underhåll ska schemaläggas innan fel inträffar för att undvika fördröjningar och ytterligare skador.
  • Serverlösa program: utlöser en serverlös funktion baserat på de dirigerade meddelandena från dina klienter. När en rörelsesensor till exempel identifierar en rörelse skickar du ett meddelande till säkerhetspersonalen för att åtgärda det.
  • Datavisualiseringar: skapa visualiseringar av dirigerade data från dina klienter för att enkelt representera och förstå data samt markera trender och extremvärden.

Routningskonfiguration:

Med routningskonfigurationen kan du skicka alla dina MQTT-meddelanden från dina klienter till antingen ett Event Grid-namnområdesämne eller ett anpassat Event Grid-ämne. När meddelandena finns i ämnet kan du konfigurera en händelseprenumeration för att använda meddelandena från ämnet. Använd följande övergripande steg för att uppnå den här konfigurationen:

  • Namnområdesämne som routningsmål:
    • Skapa ett Event Grid-namnområdesavsnitt där alla MQTT-meddelanden dirigeras.
    • Skapa en händelseprenumeration av push-typ för att dirigera dessa meddelanden till någon av de Azure-tjänster som stöds eller en anpassad webhooks eller en händelseprenumeration av kötyp för att hämta meddelandena direkt från namnområdesavsnittet via ditt program.
    • Ange routningskonfigurationen som refererar till det ämne som du skapade i det första steget.

Diagram över MQTT-meddelanderoutning till namnområdesämnen.

Diagram över MQTT-meddelandedirigering till anpassade ämnen.

Kommentar

Om du inaktiverar åtkomsten till det offentliga nätverket i namnområdet misslyckas MQTT-routningen.

Skillnad mellan namnområdesämnen och anpassade ämnen som routningsmål

I följande tabell visas skillnaden mellan namnområdesämnen och anpassade ämnen som routningsmål. En detaljerad uppdelning av vilka kvoter och gränser som ingår i varje Event Grid-resurs finns i Kvoter och gränser.

Jämförelsepunkt Namnområdesämne Anpassat ämne
Genomflöde Hög, upp till 40 MB/s (ingress) och 80 MB/s (utgående) Låg, upp till 5 MB/s (ingress och utgående)
Pull-leverans Ja
Push-leverans till Event Hubs Ja Ja
Push-leverans till Azure-tjänster (Functions, Webhooks, Service Bus-köer och -ämnen, relähybridanslutningar och lagringsköer) Ja
Meddelandelagring 7 dagar 1 dag
Krav för rolltilldelning Behövs inte eftersom MQTT-asynkron meddelandekö och namnområdesavsnittet finns under samma namnområde Krävs eftersom namnområdet som är värd för MQTT-koordinatorfunktionen och det anpassade ämnet är olika resurser

Anpassade ämneskrav för Event Grid för routning

Det anpassade Event Grid-ämnet som används för routning måste uppfylla följande krav:

  • Den måste anges för att använda molnhändelseschemat v1.0
  • Den måste finnas i samma region som namnområdet.
  • Du måste tilldela rollen "Event Grid Data Sender" till dig själv eller till den valda hanterade identiteten i det anpassade Event Grid-ämnet innan routningskonfigurationen tillämpas.
    • I portalen går du till den skapade Event Grid-ämnesresursen.
    • I menyalternativet "Åtkomstkontroll (IAM)" väljer du Lägg till en rolltilldelning.
    • På fliken Roll väljer du "Event Grid Data Sender" och sedan Nästa.
    • På fliken "Medlemmar" väljer du +Välj medlemmar och skriver sedan ditt AD-användarnamn i rutan "Välj" som visas (till exempel user@contoso.com).
    • Välj ditt AD-användarnamn och välj sedan "Granska + tilldela"

Konfiguration av Azure-portalen

Använd följande steg för att konfigurera routning:

  • Gå till ditt namnområde i Azure-portalen.
  • Under Routning kontrollerar du Aktivera routning.
  • Under ämnestyp väljer du antingen Namnområdesämne eller Anpassat ämne
  • Under ämne väljer du det ämne som du skapade där alla MQTT-meddelanden dirigeras.
  • Om anpassat ämne har valts visas avsnittet Hanterad identitet för leverans. Välj något av följande alternativ för den identitet som används för att autentisera MQTT-koordinatorn samtidigt som MQTT-meddelanden levereras till det anpassade ämnet:
    • Ingen: i det här fallet måste du tilldela rollen "Event Grid Data Sender" till dig själv i det anpassade ämnet.
    • Systemtilldelad identitet: i det här fallet måste du aktivera systemtilldelad identitet i namnområdet som en förutsättning och tilldela rollen "EventGrid Data Sender" till den systemtilldelade identiteten i det anpassade ämnet.
    • Användartilldelad identitet: i det här fallet måste du aktivera användartilldelad identitet i namnområdet som en förutsättning och tilldela rollen "EventGrid Data Sender" till den valda identiteten i det anpassade ämnet.
      • Om Användartilldelad identitet har valts visas en listruta där du kan välja önskad identitet.
  • Välj Använd.

Skärmbild som visar routningskonfigurationen via portalen.

För berikningskonfigurationsinstruktioner går du till Konfiguration av Enrichment-portalen.

Konfiguration av 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
            },

	}
}

För berikningskonfigurationsinstruktioner går du till Enrichment CLI-konfiguration.

Beteende för MQTT-meddelanderoutning

När MQTT-meddelanden dirigeras till anpassade ämnen tillhandahåller Event Grid varaktig leverans när det försöker leverera varje meddelande minst en gång omedelbart. Om det uppstår ett fel försöker Event Grid antingen skicka leveransen igen eller släpper meddelandet som var tänkt att dirigeras. Event Grid garanterar inte order för händelseleverans, så prenumeranter kan få dem i fel ordning.

I följande tabell beskrivs beteendet för MQTT-meddelanderoutning baserat på olika fel.

Fel Felbeskrivning Funktionssätt
TopicNotFoundError Det anpassade ämnet som är konfigurerat för att ta emot alla MQTT-dirigerade meddelanden har tagits bort. Event Grid släpper MQTT-meddelandet som var tänkt att dirigeras.
AuthenticationError Rollen Event Grid Data Sender för det anpassade ämnet som konfigurerats som mål för MQTT-dirigerade meddelanden togs bort. Event Grid släpper MQTT-meddelandet som var tänkt att dirigeras.
TooManyRequests Antalet MQTT-dirigerade meddelanden per sekund överskrider publiceringsgränsen för det anpassade ämnet. Event Grid försöker dirigera MQTT-meddelandet igen.
ServiceError Ett oväntat serverfel av en servers driftsorsak. Event Grid försöker dirigera MQTT-meddelandet igen.

Vid återförsök använder Event Grid en återförsöksprincip för exponentiell backoff för MQTT-meddelanderoutning. Event Grid försöker leverera på nytt enligt följande schema efter bästa förmåga:

  • 10 sekund
  • 30 sekunder
  • 1 minut
  • 5 minuter
  • 10 minuter
  • 30 minuter
  • 1 timme
  • 3 timmar
  • 6 timmar
  • Var 12:e timme

Om ett dirigerat MQTT-meddelande som placerats i kö för omleverans lyckades försöker Event Grid ta bort meddelandet från återförsökskö på bästa sätt, men dubbletter kan fortfarande tas emot.

Nästa steg:

Använd följande artiklar för att lära dig mer om routning:

Snabbstart:

Koncept: