Używanie routingu komunikatów usługi IoT Hub do wysyłania komunikatów z urządzenia do chmury do usług platformy Azure
Routing komunikatów umożliwia wysyłanie komunikatów z urządzeń do usług w chmurze w sposób zautomatyzowany, skalowalny i niezawodny. Routing komunikatów może służyć do:
Wysyłanie komunikatów i zdarzeń telemetrii urządzenia do wbudowanego punktu końcowego i niestandardowych punktów końcowych. Zdarzenia, które można kierować, obejmują zdarzenia cyklu życia urządzenia, zdarzenia zmiany bliźniaczej reprezentacji urządzenia, zdarzenia zmiany cyfrowej reprezentacji bliźniaczej i zdarzenia stanu połączenia urządzenia.
Filtruj dane przed rozsyłaniem, stosując zaawansowane zapytania. Routing komunikatów umożliwia wykonywanie zapytań dotyczących właściwości komunikatów i treści komunikatów, a także tagów bliźniaczej reprezentacji urządzenia i właściwości bliźniaczych reprezentacji urządzenia. Aby uzyskać więcej informacji, zobacz zapytania dotyczące routingu komunikatów.
Usługa IoT Hub definiuje wspólny format dla wszystkich komunikatów z urządzenia do chmury w celu współdziałania między protokołami. Aby uzyskać więcej informacji, zobacz Tworzenie i odczytywanie komunikatów usługi IoT Hub.
Uwaga
Niektóre funkcje wymienione w tym artykule, takie jak obsługa komunikatów w chmurze, bliźniacze reprezentacje urządzeń i zarządzanie urządzeniami, są dostępne tylko w warstwie Standardowa usługi IoT Hub. Aby uzyskać więcej informacji na temat warstw podstawowej i standardowej/bezpłatnej usługi IoT Hub, zobacz Wybieranie odpowiedniej warstwy usługi IoT Hub dla rozwiązania.
Punkty końcowe routingu
Każde centrum IoT ma domyślny punkt końcowy routingu o nazwie komunikaty/zdarzenia zgodne z usługą Event Hubs. Możesz również utworzyć niestandardowe punkty końcowe wskazujące inne usługi w ramach subskrypcji platformy Azure.
Usługa IoT Hub obsługuje obecnie następujące punkty końcowe na potrzeby routingu komunikatów:
- Wbudowany punkt końcowy
- Kontenery magazynu
- Kolejki usługi Service Bus
- Tematy usługi Service Bus
- Event Hubs
- Cosmos DB
Aby uzyskać więcej informacji na temat każdego z tych punktów końcowych, zobacz Punkty końcowe usługi IoT Hub.
Każdy komunikat jest kierowany do wszystkich punktów końcowych, których zapytania dotyczące routingu są zgodne, co oznacza, że komunikat może być kierowany do wielu punktów końcowych. Jeśli jednak komunikat pasuje do wielu tras wskazujących ten sam punkt końcowy, usługa IoT Hub dostarcza komunikat do tego punktu końcowego tylko raz.
Usługa IoT Hub potrzebuje dostępu do zapisu do tych punktów końcowych usługi, aby routing komunikatów działał. Jeśli skonfigurujesz punkty końcowe za pośrednictwem witryny Azure Portal, zostaną dodane niezbędne uprawnienia. Jeśli skonfigurujesz punkty końcowe przy użyciu programu PowerShell lub interfejsu wiersza polecenia platformy Azure, musisz podać uprawnienie dostępu do zapisu.
Aby dowiedzieć się, jak tworzyć punkty końcowe, zobacz następujące artykuły:
- Zarządzanie trasami i punktami końcowymi przy użyciu witryny Azure Portal
- Zarządzanie trasami i punktami końcowymi przy użyciu interfejsu wiersza polecenia platformy Azure
- Zarządzanie trasami i punktami końcowymi przy użyciu programu PowerShell
- Zarządzanie trasami i punktami końcowymi przy użyciu usługi Azure Resource Manager
Upewnij się, że usługi są skonfigurowane tak, aby obsługiwały oczekiwaną przepływność. Jeśli na przykład używasz usługi Event Hubs jako niestandardowego punktu końcowego, musisz skonfigurować jednostki przepływności dla tego centrum zdarzeń, aby umożliwić obsługę ruchu przychodzącego zdarzeń, które mają być wysyłane za pośrednictwem routingu komunikatów usługi IoT Hub. Podobnie w przypadku korzystania z kolejki usługi Service Bus jako punktu końcowego należy skonfigurować maksymalny rozmiar , aby zapewnić, że kolejka będzie mogła przechowywać wszystkie dane przychodzące, dopóki nie zostanie on wychodzący przez użytkowników. Podczas pierwszego konfigurowania rozwiązania IoT może być konieczne monitorowanie innych punktów końcowych i wprowadzenie niezbędnych korekt dotyczących rzeczywistego obciążenia.
Jeśli niestandardowy punkt końcowy ma konfiguracje zapory, rozważ użycie wyjątku zaufanej firmy Microsoft.
Kierowanie do punktu końcowego w innej subskrypcji
Jeśli zasób punktu końcowego znajduje się w innej subskrypcji niż centrum IoT, musisz skonfigurować centrum IoT jako zaufaną usługę firmy Microsoft przed utworzeniem niestandardowego punktu końcowego. Po utworzeniu niestandardowego punktu końcowego ustaw typ uwierzytelniania na tożsamość przypisaną przez użytkownika.
Aby uzyskać więcej informacji, zobacz Łączność wychodząca z usługi IoT Hub do innych zasobów platformy Azure.
Routing zapytań
Routing komunikatów usługi IoT Hub zapewnia możliwość filtrowania danych przed wysłaniem ich do punktów końcowych. Każde skonfigurowane zapytanie routingu ma następujące właściwości:
Właściwości | Opis |
---|---|
Nazwa/nazwisko | Unikatowa nazwa identyfikująca zapytanie. |
Source | Źródło strumienia danych do działania. Na przykład dane telemetryczne urządzenia. |
Warunek | Wyrażenie zapytania dla zapytania routingu uruchamianego względem właściwości aplikacji komunikatów, właściwości systemu, treści komunikatu, tagów bliźniaczych reprezentacji urządzenia i właściwości bliźniaczych reprezentacji urządzenia w celu określenia, czy jest to dopasowanie dla punktu końcowego. |
Punkt końcowy | Nazwa punktu końcowego, w którym usługa IoT Hub wysyła komunikaty zgodne z zapytaniem. Zalecamy wybranie punktu końcowego w tym samym regionie co centrum IoT. |
Pojedynczy komunikat może być zgodny z warunkiem wielu zapytań routingu, w tym przypadku usługa IoT Hub dostarcza komunikat do punktu końcowego skojarzonego z każdym dopasowanym zapytaniem. Usługa IoT Hub automatycznie deduplikuje również dostarczanie komunikatów, więc jeśli komunikat pasuje do wielu zapytań, które mają to samo miejsce docelowe, jest zapisywany tylko raz w tym miejscu docelowym.
Aby uzyskać więcej informacji, zobacz Składnia zapytania routingu komunikatów usługi IoT Hub.
Odczytywanie danych, które zostały przekierowane
Skorzystaj z poniższych artykułów, aby dowiedzieć się, jak odczytywać komunikaty z punktu końcowego.
Odczyt z usługi Blob Storage
Odczyt z usługi Event Hubs
Odczyt z kolejek usługi Service Bus
Przeczytaj tematy dotyczące usługi Service Bus
Trasa powrotu
Trasa rezerwowa wysyła wszystkie komunikaty, które nie spełniają warunków zapytania w żadnej z istniejących tras do wbudowanego punktu końcowego (komunikatów/zdarzeń), który jest zgodny z usługą Event Hubs. Jeśli routing komunikatów jest włączony, możesz włączyć funkcję rezerwowej trasy. Po utworzeniu dowolnej trasy dane przestaną przepływać do wbudowanego punktu końcowego, chyba że zostanie utworzona trasa do tego punktu końcowego. Jeśli nie ma tras do wbudowanego punktu końcowego i jest włączona trasa rezerwowa, do wbudowanego punktu końcowego będą wysyłane tylko komunikaty, które nie pasują do żadnych warunków zapytania dotyczących tras. Nawet jeśli wszystkie istniejące trasy zostaną usunięte, możliwość trasy rezerwowej musi być włączona, aby odbierać wszystkie dane we wbudowanym punkcie końcowym.
Trasę rezerwową można włączyć lub wyłączyć w witrynie Azure Portal w bloku Routing komunikatów. Możesz również użyć usługi Azure Resource Manager dla opcji FallbackRouteProperties , aby użyć niestandardowego punktu końcowego dla trasy rezerwowej.
Zdarzenia niezwiązane z telemetrią
Oprócz telemetrii urządzenia routing komunikatów umożliwia również wysyłanie zdarzeń niezwiązanych z telemetrią, w tym:
- Zdarzenia zmiany bliźniaczej reprezentacji urządzenia
- Zdarzenia cyklu życia urządzenia
- Zdarzenia cyklu życia zadania urządzenia
- Zdarzenia zmiany cyfrowej reprezentacji bliźniaczej
- Zdarzenia stanu połączenia urządzenia
Jeśli na przykład trasa zostanie utworzona przy użyciu źródła danych ustawionego na zdarzenia zmiany bliźniaczej reprezentacji urządzenia, usługa IoT Hub wysyła komunikaty do punktu końcowego zawierającego zmianę bliźniaczej reprezentacji urządzenia. Podobnie, jeśli trasa jest tworzona przy użyciu źródła danych ustawionego na zdarzenia cyklu życia urządzenia, usługa IoT Hub wysyła komunikat wskazujący, czy urządzenie lub moduł został usunięty, czy utworzony. Aby uzyskać więcej informacji na temat zdarzeń cyklu życia urządzenia, zobacz Powiadomienia dotyczące cyklu życia urządzenia i modułu.
W przypadku korzystania z usługi Azure IoT Plug and Play deweloper może tworzyć trasy ze źródłem danych ustawionym na zdarzenia zmiany cyfrowej reprezentacji bliźniaczej, a usługa IoT Hub wysyła komunikaty za każdym razem, gdy właściwość cyfrowej reprezentacji bliźniaczej zostanie ustawiona lub zmieniona, zostanie zamieniona lub gdy wystąpi zdarzenie zmiany dla bazowej reprezentacji urządzenia. Na koniec, jeśli trasa jest tworzona za pomocą źródła danych ustawionego na Zdarzenia stanu połączenia urządzenia, usługa IoT Hub wysyła komunikat wskazujący, czy urządzenie zostało połączone, czy odłączone.
Usługa IoT Hub integruje się również z usługą Azure Event Grid, aby publikować zdarzenia urządzeń w celu obsługi integracji w czasie rzeczywistym i automatyzacji przepływów pracy na podstawie tych zdarzeń. Zapoznaj się z kluczowymi różnicami między routingiem komunikatów i usługą Event Grid , aby dowiedzieć się, co działa najlepiej w danym scenariuszu.
Ograniczenia dotyczące zdarzeń stanów połączeń z urządzeniami
Zdarzenia stanu połączenia urządzenia są dostępne dla urządzeń łączących się przy użyciu protokołu MQTT lub AMQP albo przy użyciu jednego z tych protokołów za pośrednictwem protokołu WebSocket. Żądania wysyłane tylko za pomocą protokołu HTTPS nie będą wyzwalać powiadomień o stanie połączenia urządzenia. Aby usługa IoT Hub zaczęła wysyłać zdarzenia stanu połączenia urządzenia, po otwarciu połączenia urządzenie musi wywołać operację odbierania komunikatów z chmury do urządzenia lub operację wysyłania danych telemetrycznych z urządzenia do chmury . Poza zestawami SDK usługi Azure IoT w MQTT te operacje są równoznaczne z subskrybowaniem lub publikowaniem w odpowiednich tematach obsługi komunikatów. Za pośrednictwem protokołu AMQP te operacje są równoznaczne z dołączaniem lub przesyłaniem komunikatu w odpowiednich ścieżkach linków. Aby uzyskać więcej informacji, zobacz następujące artykuły:
- Komunikacja z usługą IoT Hub przy użyciu protokołu MQTT
- Komunikacja z usługą IoT Hub przy użyciu protokołu AMQP
Usługa IoT Hub nie zgłasza każdego zdarzenia połączenia i rozłączenia poszczególnych urządzeń, ale publikuje bieżący stan połączenia wykonany w okresowej, 60-sekundowej migawki. Odbieranie tego samego zdarzenia stanu połączenia z różnymi numerami sekwencji lub różnymi zdarzeniami stanu połączenia oznaczają, że wystąpiła zmiana stanu połączenia urządzenia w 60-sekundowym oknie.
Testowanie tras
Podczas tworzenia nowej trasy lub edytowania istniejącej trasy należy przetestować zapytanie dotyczące trasy przy użyciu przykładowego komunikatu. Poszczególne trasy można testować lub testować wszystkie trasy jednocześnie, a podczas testu nie są kierowane żadne komunikaty do punktów końcowych. Do testowania można używać witryny Azure Portal, usługi Azure Resource Manager, programu Azure PowerShell i interfejsu wiersza polecenia platformy Azure. Wyniki pomagają określić, czy przykładowy komunikat jest zgodny, czy nie pasuje do zapytania, czy też nie można uruchomić testu, ponieważ przykładowa wiadomość lub składnia zapytania są niepoprawne. Aby dowiedzieć się więcej, zobacz Testowanie trasy i testowanie wszystkich tras.
Opóźnienie
Podczas kierowania komunikatów telemetrycznych z urządzenia do chmury po utworzeniu pierwszej trasy występuje niewielki wzrost opóźnienia kompleksowego.
W większości przypadków średni wzrost opóźnienia wynosi mniej niż 500 milisekund. Jednak opóźnienie może się różnić i może być wyższe w zależności od warstwy centrum IoT i architektury rozwiązania. Opóźnienie można monitorować przy użyciu metryk Routing: opóźnienie komunikatów dla komunikatów/zdarzeń lub d2c.endpoints.latency.builtIn.events IoT Hub. Tworzenie lub usuwanie dowolnej trasy po pierwszym nie ma wpływu na kompleksowe opóźnienie.
Monitorowanie i rozwiązywanie problemów
Usługa IoT Hub udostępnia kilka metryk związanych z routingiem i punktami końcowymi, które umożliwiają omówienie kondycji centrum i wysyłanych komunikatów. Możesz również śledzić błędy występujące podczas oceny zapytania routingu i kondycji punktu końcowego postrzeganego przez usługę IoT Hub z kategorią tras w dziennikach zasobów usługi IoT Hub. Aby dowiedzieć się więcej na temat korzystania z metryk i dzienników zasobów w usłudze IoT Hub, zobacz Monitorowanie usługi Azure IoT Hub.
Aby uzyskać stan kondycji punktów końcowych, możesz użyć interfejsu API REST Get Endpoint Health .
Skorzystaj z przewodnika rozwiązywania problemów z routingiem, aby uzyskać więcej szczegółów i pomoc techniczną dotyczącą rozwiązywania problemów z routingiem.