Använda IoT Hub för att skicka enhet-till-moln-meddelanden till olika slutpunkter
Anteckning
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 nivåerna Basic och Standard finns i artikeln om att välja rätt nivå för IoT Hub.
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 om enhettelemetri samt händelser, nämligen enhetslivscykelhändelser, ändringshändelser för enhetstvilling, ändringshändelser för digitala tvillingar och enhetsanslutningstillståndshändelser till de inbyggda slutpunkterna och anpassade slutpunkter. Läs mer om routningsslutpunkter. Mer information om de händelser som skickas från IoT Plug and Play enheter finns i Förstå IoT-Plug and Play digital twins.
Filtrera data innan du dirigerar dem till olika slutpunkter genom att tillämpa omfattande frågor. Med meddelanderoutning kan du fråga efter meddelandeegenskaper och meddelandetext samt taggar för enhetstvillingar och egenskaper för enhetstvillingarna. Läs mer om hur du använder frågor i meddelanderoutning.
IoT Hub skrivåtkomst till dessa tjänstslutpunkter för att meddelanderoutning ska fungera. Om du konfigurerar dina slutpunkter via Azure Portal läggs de nödvändiga behörigheterna till åt dig. Se till att du konfigurerar dina tjänster så att de stöder det förväntade dataflödet. Om du till exempel använder Event Hubs som en anpassad slutpunkt måste du konfigurera genomflödesenheterna för den händelsehubben så att den kan hantera ingressen till 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 innehålla alla ingående data tills den har utgående från 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.
Den IoT Hub definierar ett gemensamt format för alla meddelanden från enhet till moln för samverkan mellan protokoll. Om ett meddelande matchar flera vägar som pekar på samma slutpunkt, IoT Hub till den slutpunkten bara en gång. Därför behöver du inte konfigurera deduplicering på din Service Bus kö eller ämne. Använd den här självstudien om du vill lära dig hur du konfigurerar meddelanderoutning.
Slutpunkter för routning
En IoT-hubb har en inbyggd standardslutpunkt (meddelanden/händelser) som är kompatibel med Event Hubs. Du kan skapa anpassade slutpunkter för att dirigera meddelanden till genom att länka andra tjänster i din prenumeration till IoT Hub.
Varje meddelande dirigeras till alla slutpunkter vars routningsfrågor det matchar. Med andra ord kan ett meddelande dirigeras till flera slutpunkter.
Om din anpassade slutpunkt har brandväggskonfigurationer bör du överväga att använda Microsofts undantag för betrodd första part.
IoT Hub stöder för närvarande följande slutpunkter:
- Inbyggd slutpunkt
- Azure Storage
- Service Bus Köer och Service Bus ämnen
- Event Hubs
Inbyggd slutpunkt som slutpunkt för routning
Du kan använda Event Hubs standardintegrering och -SDK:er för att ta emot "enhet till molnet"-meddelanden från den inbyggda slutpunkten (meddelanden/händelser). När en väg har skapats slutar data flöda till den inbyggda slutpunkten såvida inte en väg har skapats till den slutpunkten. Även om inga vägar skapas måste en reservväg aktiveras för att dirigera meddelanden till den inbyggda slutpunkten. Återställningen är aktiverad som standard om du skapar din hubb med hjälp av portalen eller CLI.
Azure Storage som en slutpunkt för routning
Det finns två lagringstjänster IoT Hub kan dirigera meddelanden till: Azure Blob Storage- och Azure Data Lake Storage Gen2-konton (ADLS Gen2). Azure Data Lake Storage-konton är hierarkiskanamnrymdsaktiverade lagringskonton som bygger på bloblagring. Båda dessa använder blobar för lagring.
IoT Hub stöder skrivning av data Azure Storage i Apache Avro-format och JSON-format. Standardvärdet är AVRO. När du använder JSON-kodning måste du ange contentType till application/json och contentEncoding till UTF-8 i meddelandesystemets egenskaper. Båda dessa värden är icke-känsliga. Om innehållskodningen inte har angetts kommer IoT Hub att skriva meddelandena i base 64-kodat format.
Kodningsformatet kan bara anges när bloblagringsslutpunkten har konfigurerats. Den kan inte redigeras för en befintlig slutpunkt. Om du vill växla kodningsformat för en befintlig slutpunkt måste du ta bort end endoint och skapa den på nytt med det format du vill ha. En användbar strategi kan vara att skapa en ny anpassad slutpunkt med önskat kodningsformat och lägga till en parallell väg till slutpunkten. På så sätt kan du verifiera dina data innan du tar bort den befintliga slutpunkten.
Du kan välja kodningsformat med hjälp av IoT Hub Create eller Update REST API, särskilt RoutingStorageContainerProperties, Azure Portal, Azure CLI eller Azure PowerShell. Följande bild visar hur du väljer kodningsformat i Azure Portal.

IoT Hub batchar meddelanden och skriver data till lagring när batchen når en viss storlek eller en viss tid har förflutit. IoT Hub som standard följande namngivningskonvention för filer:
{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}
Du kan använda valfri namngivningskonvention för filer, men du måste använda alla token i listan. IoT Hub skriver till en tom blob om det inte finns några data att skriva.
Vi rekommenderar att du listar blobar eller filer och sedan iterera över dem för att se till att alla blobar eller filer läses utan att göra några antaganden om partitionen. Partitionsintervallet kan ändras under en Microsoft-initierad redundansväxling eller IoT Hub manuell redundansväxling. Du kan använda API:et Lista blobar för att räkna upp listan över blobar eller List ADLS Gen2-API:et för listan över filer. Se följande exempel som vägledning.
public void ListBlobsInContainer(string containerName, string iothub)
{
var storageAccount = CloudStorageAccount.Parse(this.blobConnectionString);
var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
if (cloudBlobContainer.Exists())
{
var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
foreach (IListBlobItem item in results)
{
Console.WriteLine(item.Uri);
}
}
}
Om du vill skapa ett Azure Data Lake Gen2-kompatibelt lagringskonto skapar du ett nytt V2-lagringskonto och väljer Aktiverat i fältet Hierarkisk namnrymd på fliken Avancerat enligt följande bild:

Service Bus Köer och Service Bus ämnen som en slutpunkt för routning
Service Bus köer och ämnen som används IoT Hub slutpunkter får inte ha Sessioner eller Dubblettidentifiering aktiverat. Om något av dessa alternativ är aktiverat visas slutpunkten som Det går inte att nå i Azure Portal.
Event Hubs som en slutpunkt för routning
Förutom den inbyggda Event Hubs slutpunkten kan du även dirigera data till anpassade slutpunkter av typen Event Hubs.
Läsa data som har dirigerats
Du kan konfigurera en väg genom att följa den här självstudien.
Använd följande självstudier för att lära dig hur du läser meddelanden från en slutpunkt.
Läsa från Blob Storage
Läsa från Event Hubs
Läsa från Service Bus köer
Läsa från Service Bus avsnitt
Reservväg
Reservvägen skickar alla meddelanden som inte uppfyller frågevillkor på någon av de befintliga vägarna till den inbyggda Event Hubs (meddelanden/händelser), som är kompatibel med Event Hubs. Om meddelanderoutning är aktiverat kan du aktivera funktionen för reservväg. När en väg har skapats slutar data flöda till den inbyggda slutpunkten, såvida inte en väg skapas till den 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. Om alla befintliga vägar tas bort måste återställningsvägen dessutom vara aktiverad för att ta emot alla data på den inbyggda slutpunkten.
Du kan aktivera/inaktivera återställningsvägen på bladet Azure Portal >för meddelanderoutning. Du kan också använda Azure Resource Manager för FallbackRouteProperties för att använda en anpassad slutpunkt för återställningsväg.
Händelser som inte gäller telemetri
Förutom enhettelemetri kan meddelanderoutning även skicka enhetstvillingändringshändelser, enhetslivscykelhändelser, ändringshändelser för digitala tvillingar och enhetsanslutningstillståndshändelser. Om en väg till exempel skapas med datakällan inställd på enhetstvillingens ändringshändelser IoT Hub meddelanden till slutpunkten som innehåller ändringen i enhetstvillingen. Om en väg skapas med datakällan inställd på enhetslivscykelhändelser skickar IoT Hub ett meddelande som anger om enheten har tagits bort eller skapats. Som en del av Azure IoT Plug and Playkan en utvecklare skapa vägar med datakällan inställd på ändringshändelser för digitala tvillingar och IoT Hub skickar meddelanden när en digital tvillingegenskap anges eller ändras, en digital tvilling ersätts eller när en ändringshändelse inträffar för den underliggande enhetstvillingen. Slutligen, om en väg skapas med datakällan inställd på enhetsanslutningstillståndshändelser , 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 realtidsintegrering och automatisering av arbetsflöden baserat på dessa händelser. Se viktiga skillnader mellan meddelanderoutning och Event Grid att lära dig vilket som fungerar bäst för ditt scenario.
Begränsningar för enhetsanslutningstillståndshändelser
För att ta emot enhetsanslutningstillståndshändelser måste en enhet anropa antingen enhet-till-moln-telemetrin för att skicka telemetri eller en åtgärd för att ta emot meddelanden från moln till enhet IoT Hub. Men om en enhet använder AMQP-protokollet för att ansluta till IoT Hub rekommenderar vi att enheten anropar åtgärden för att ta emot meddelanden från moln till enhet, annars kan deras meddelanden om anslutningstillståndet fördröjas med några minuter. Om enheten ansluter med MQTT-protokollet IoT Hub håller moln-till-enhet-länken öppen. Om du vill öppna moln-till-enhet-länken för AMQP anropar du API:et Receive Async.
Länken från enhet till moln förblir öppen så länge enheten skickar telemetri.
Om enhetsanslutningshanteraren, vilket innebär att om enheten ansluter och kopplar från ofta, skickar IoT Hub inte varje enskilt anslutningstillstånd, utan publicerar det aktuella anslutningstillståndet som tas vid en periodisk ögonblicksbild på 60 sekunder tills avsöjaren stoppas. Om du får antingen samma anslutningstillståndshändelse med olika sekvensnummer eller olika anslutningstillståndshändelser innebär båda att enhetens anslutningstillstånd ändrades.
Testa vägar
När du skapar en ny väg eller redigerar en befintlig väg bör du testa vägfrå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 Portal, Azure Resource Manager, Azure PowerShell och Azure CLI kan användas för testning. Resultat hjälper till att identifiera om exempelmeddelandet matchade frågan, meddelandet matchar inte frågan eller testet kunde inte köras eftersom exempelmeddelandet eller frågesyntaxen är felaktiga. Mer information finns i Testa vägen och Testa alla vägar.
Svarstid
När du dirigerar telemetrimeddelanden från enhet till moln med hjälp av inbyggda slutpunkter ökar svarstiden något från slutpunkt till slutpunkt när den första vägen har skapats.
I de flesta fall är den genomsnittliga svarstidsökningen mindre än 500 ms. Du kan övervaka svarstiden med hjälp av Routning: meddelandesvarstid för meddelanden/händelser eller d2c.endpoints.latency.builtIn.events IoT Hub mått. Att skapa eller ta bort en väg efter den första påverkar inte svarstiden från början till slut.
Övervaka och felsöka
IoT Hub tillhandahå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 de meddelanden som skickas. En lista över alla mått IoT Hub uppdelade efter funktionskategori finns i Mått i referensen för övervakningsdata. Du kan spåra fel som inträffar 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 IoT Hub.
Du kan använda REST API Hämta Slutpunktshälsa för att hämta hälsostatus för slutpunkterna.
Använd felsökningsguiden för routning för mer information och stöd för felsökning av routning.
Nästa steg
Information om hur du skapar meddelandevägar finns i Bearbeta IoT Hub meddelanden från enheten till molnet med hjälp av vägar.
Information om de SDK:er som du kan använda för att skicka "enhet till molnet"-meddelanden finns i Azure IoT-SDK:er.