Använda IoT Hub-meddelanderoutning för att skicka meddelanden från enhet till molnet till Azure-tjänster

Med meddelanderoutning kan du skicka meddelanden från dina enheter till molntjänster på ett automatiserat, skalbart och tillförlitligt sätt. Meddelanderoutning kan användas för att:

  • Skicka meddelanden och händelser för enhetstelemetri till den inbyggda slutpunkten och anpassade slutpunkter. Händelser som kan dirigeras är händelser för enhetens livscykel, ändringshändelser för enhetstvillingar, ändringshändelser för digitala tvillingar och händelser för enhetsanslutningstillstånd.

  • Filtrera data innan du dirigerar dem genom att tillämpa omfattande frågor. Med meddelanderoutning kan du fråga efter meddelandeegenskaper och meddelandetext samt enhetstvillingtaggar och egenskaper för enhetstvillingar. Mer information finns i frågor i meddelanderoutning.

IoT Hub definierar ett gemensamt format för alla enhets-till-moln-meddelanden för samverkan mellan protokoll. Mer information finns i Skapa och läsa IoT Hub-meddelanden.

Kommentar

Några av de funktioner som nämns i den här artikeln, t.ex. moln till enhet-meddelanden, enhetstvillingar och enhetshantering, är bara tillgängliga på IoT Hubs standardnivå. Mer information om de grundläggande och standard-/kostnadsfria IoT Hub-nivåerna finns i Välj rätt IoT Hub-nivå för din lösning.

Slutpunkter för routning

Varje IoT-hubb har en standarddirigeringsslutpunkt som kallas meddelanden/händelser som är kompatibel med Event Hubs. Du kan också skapa anpassade slutpunkter som pekar på andra tjänster i din Azure-prenumeration.

IoT Hub stöder för närvarande följande slutpunkter för meddelanderoutning:

  • Inbyggd slutpunkt
  • Lagringscontainrar
  • Service Bus-köer
  • Service Bus-avsnitt
  • Event Hubs
  • Cosmos DB (förhandsversion)

Mer information om var och en av dessa slutpunkter finns i IoT Hub-slutpunkter.

Varje meddelande dirigeras till alla slutpunkter vars routningsfrågor det matchar, vilket innebär att ett meddelande kan dirigeras till flera slutpunkter. Men om ett meddelande matchar flera vägar som pekar på samma slutpunkt levererar IoT Hub meddelandet till slutpunkten bara en gång.

IoT Hub behöver skrivåtkomst till dessa tjänstslutpunkter för att meddelanderoutning ska fungera. Om du konfigurerar dina slutpunkter via Azure-portalen läggs nödvändiga behörigheter till för dig. Om du konfigurerar dina slutpunkter med Hjälp av PowerShell eller Azure CLI måste du ange skrivbehörigheten.

Information om hur du skapar slutpunkter finns i följande artiklar:

Se till att du konfigurerar dina tjänster för att stödja det förväntade dataflödet. Om du till exempel använder Event Hubs som en anpassad slutpunkt måste du konfigurera dataflödesenheterna för händelsehubben så att den kan hantera ingressen för händelser som du planerar att skicka via IoT Hub-meddelanderoutning. När du använder en Service Bus-kö som slutpunkt måste du på samma sätt konfigurera den maximala storleken för att säkerställa att kön kan lagra alla inkommande data tills den har utgått av konsumenter. När du först konfigurerar din IoT-lösning kan du behöva övervaka dina andra slutpunkter och göra nödvändiga justeringar för den faktiska belastningen.

Om din anpassade slutpunkt har brandväggskonfigurationer bör du överväga att använda microsofts betrodda undantag från första part.

Dirigera till en slutpunkt i en annan prenumeration

Om slutpunktsresursen finns i en annan prenumeration än din IoT-hubb måste du konfigurera din IoT-hubb som en betrodd Microsoft-tjänst innan du skapar en anpassad slutpunkt. När du skapar den anpassade slutpunkten anger du autentiseringstypen till användartilldelad identitet.

Mer information finns i Utgående anslutning från IoT Hub till andra Azure-resurser.

Routningsfrågor

IoT Hub-meddelanderoutning ger en frågefunktion för att filtrera data innan de dirigeras till slutpunkterna. Varje routningsfråga som du konfigurerar har följande egenskaper:

Property Beskrivning
Namn Det unika namn som identifierar frågan.
Source Dataströmmens ursprung som ska åtgärdas. Till exempel enhetstelemetri.
Condition Frågeuttrycket för routningsfrågan som körs mot egenskaperna för meddelandeprogrammet, systemegenskaper, meddelandetext, enhetstvillingtaggar och egenskaper för enhetstvillingar för att avgöra om det är en matchning för slutpunkten.
Slutpunkt Namnet på slutpunkten där IoT Hub skickar meddelanden som matchar frågan. Vi rekommenderar att du väljer en slutpunkt i samma region som din IoT-hubb.

Ett enda meddelande kan matcha villkoret för flera routningsfrågor, i vilket fall IoT Hub levererar meddelandet till slutpunkten som är associerad med varje matchad fråga. IoT Hub deduplicerar även meddelandeleverans automatiskt, så om ett meddelande matchar flera frågor som har samma mål skrivs det bara en gång till det målet.

Mer information finns i Frågesyntax för IoT Hub-meddelanderoutning.

Läsa data som har dirigerats

Använd följande artiklar för att lära dig hur du läser meddelanden från en slutpunkt.

Reservväg

Återställningsvägen skickar alla meddelanden som inte uppfyller frågevillkoren på någon av de befintliga vägarna till den inbyggda slutpunkten (meddelanden/händelser), som är kompatibel med Event Hubs. Om meddelanderoutning är aktiverat kan du aktivera återställningsvägens funktion. När en väg har skapats slutar data att flöda till den inbyggda slutpunkten, såvida inte en väg skapas till slutpunkten. Om det inte finns några vägar till den inbyggda slutpunkten och en återställningsväg är aktiverad skickas endast meddelanden som inte matchar några frågevillkor på vägar till den inbyggda slutpunkten. Även om alla befintliga vägar tas bort måste återställningsvägens funktion aktiveras för att ta emot alla data på den inbyggda slutpunkten.

Du kan aktivera eller inaktivera återställningsvägen i Azure-portalen på bladet Meddelanderoutning . Du kan också använda Azure Resource Manager för FallbackRouteProperties för att använda en anpassad slutpunkt för återställningsvägen.

Icke-telemetrihändelser

Förutom enhetstelemetri möjliggör meddelanderoutning även sändning av icke-telemetrihändelser, inklusive:

  • Ändringshändelser för enhetstvillingar
  • Händelser i enhetens livscykel
  • Händelser för enhetsjobbslivscykel
  • Ändringshändelser för digitala tvillingar
  • Händelser för enhetsanslutningstillstånd

Om en väg till exempel skapas med datakällan inställd på Enhetstvillingens ändringshändelser skickar IoT Hub meddelanden till slutpunkten som innehåller ändringen i enhetstvillingen. Om en väg skapas med datakällan inställd på Händelser för enhetslivscykel skickar IoT Hub ett meddelande som anger om enheten eller modulen har tagits bort eller skapats. Mer information om händelser i enhetens livscykel finns i Aviseringar om enhets- och modullivscykel.

När du använder Azure IoT Plug and Play kan en utvecklare skapa vägar med datakällan inställd på Digital Twin Change Events och IoT Hub skickar meddelanden när en digital tvillingegenskap har angetts eller ändrats, en digital tvilling ersätts eller när en ändringshändelse inträffar för den underliggande enhetstvillingen. Om en väg skapas med datakällan inställd på Enhetshändelser för Anslut iontillstånd skickar IoT Hub ett meddelande som anger om enheten var ansluten eller frånkopplad.

IoT Hub integreras också med Azure Event Grid för att publicera enhetshändelser för att stödja realtidsintegreringar och automatisering av arbetsflöden baserat på dessa händelser. Se viktiga skillnader mellan meddelanderoutning och Event Grid för att lära dig vad som fungerar bäst för ditt scenario.

Begränsningar för enhetsanslutningstillståndshändelser

Händelser för enhetsanslutningstillstånd är tillgängliga för enheter som ansluter med MQTT- eller AMQP-protokollet eller med hjälp av något av dessa protokoll via WebSockets. Begäranden som görs endast med HTTPS utlöser inte meddelanden om enhetsanslutningstillstånd. För att IoT Hub ska börja skicka händelser för enhetsanslutningstillstånd måste en enhet efter att ha öppnat en anslutning anropa antingen åtgärden för att ta emot meddelanden från moln till enhet eller skicka telemetriåtgärdenfrån enhet till molnet. Utanför Azure IoT SDK:er motsvarar dessa åtgärder i MQTT prenumerations- eller PUBLISH-åtgärder i lämpliga meddelandeavsnitt. Över AMQP motsvarar dessa åtgärder att ansluta eller överföra ett meddelande på lämpliga länksökvägar. Mer information finns i följande artiklar:

IoT Hub rapporterar inte varje enskild enhetsanslutnings- och frånkopplingshändelse, utan publicerar i stället det aktuella anslutningstillståndet vid en periodisk ögonblicksbild på 60 sekunder. Att ta emot antingen samma anslutningstillståndshändelse med olika sekvensnummer eller olika anslutningstillståndshändelser innebär båda att enhetens anslutningstillstånd ändrades under 60-sekundersperioden.

Testvägar

När du skapar en ny väg eller redigerar en befintlig väg bör du testa routningsfrågan med ett exempelmeddelande. Du kan testa enskilda vägar eller testa alla vägar samtidigt och inga meddelanden dirigeras till slutpunkterna under testet. Azure-portalen, Azure Resource Manager, Azure PowerShell och Azure CLI kan användas för testning. Resultat hjälper till att identifiera om exempelmeddelandet matchade eller inte matchade frågan, eller om testet inte kunde köras eftersom exempelmeddelandet eller frågesyntaxen är felaktiga. Mer information finns i Testa väg och Testa alla vägar.

Svarstid

När du dirigerar telemetrimeddelanden från enhet till moln ökar svarstiden från slutpunkt till slutpunkt när den första vägen har skapats.

I de flesta fall är den genomsnittliga ökningen av svarstiden mindre än 500 millisekunder. Svarstiden kan dock variera och kan vara högre beroende på nivån för din IoT-hubb och din lösningsarkitektur. Du kan övervaka svarstiden med hjälp av måtten Routning: meddelandesvarstid för meddelanden/händelser eller d2c.endpoints.latency.builtIn.events IoT Hub. Att skapa eller ta bort en väg efter den första påverkar inte svarstiden från slutpunkt till slutpunkt.

Övervaka och felsök

IoT Hub innehåller flera mått som rör routning och slutpunkter för att ge dig en översikt över hälsotillståndet för din hubb och skickade meddelanden. Du kan också spåra fel som uppstår under utvärderingen av en routningsfråga och slutpunktshälsa som uppfattas av IoT Hub med routningskategorin i IoT Hub-resursloggar. Mer information om hur du använder mått och resursloggar med IoT Hub finns i Övervaka Azure IoT Hub.

Du kan använda REST API :et Get Endpoint Health för att hämta hälsostatusen för slutpunkter.

Använd felsökningsguiden för routning för mer information och stöd för felsökning av routning.