Farklı uç noktalara cihazdan buluta iletiler göndermek için IoT Hub ileti yönlendirmeyi kullanma

Not

Bu makalede bahsedilen, buluttan cihaza mesajlaşma, cihaz iksi ve cihaz yönetimi gibi özelliklerden bazıları yalnızca standart IoT Hub standart katmanında kullanılabilir. Temel ve standart IoT Hub katmanları hakkında daha fazla bilgi için bkz. Doğru IoT Hub katmanını seçme.

İleti yönlendirme, cihazlarınızdan bulut hizmetlerine otomatik, ölçeklenebilir ve güvenilir bir şekilde ileti göndermenizi sağlar. İleti yönlendirme şu şekilde kullanılabilir:

  • Cihaz telemetri iletilerinin yanı sıra , cihaz yaşam döngüsü olayları, cihaz ikizi değişiklik olayları, dijital ikizi değişiklik olayları ve cihaz bağlantısı durum olayları yerleşik uç noktaya ve özel uç noktalara gönderiliyor. Yönlendirme uç noktalarıhakkında bilgi edinin. IoT Tak ve Kullan cihazlarından gönderilen olaylar hakkında daha fazla bilgi edinmek için bkz. ıot Tak ve kullan dijital TWINS 'ı anlama.

  • Zengin sorgular uygulayarak verileri çeşitli uç noktalara yönlendirmeden önce verileri filtreleme . İleti yönlendirme, ileti özellikleri ve ileti gövdesinde, Device ikizi etiketleri ve Device ikizi özellikleri ile sorgulama yapmanıza olanak sağlar. İleti yönlendirmesinde sorgularıkullanma hakkında daha fazla bilgi edinin.

IoT Hub, ileti yönlendirmenin çalışması için bu hizmet uç noktalarına yazma erişimi gerektirir. Uç noktalarınızı Azure portal aracılığıyla yapılandırırsanız, sizin için gerekli izinler eklenir. Hizmetlerinizi beklenen aktarım hızını destekleyecek şekilde yapılandırmadığınızdan emin olun. Örneğin, özel bir uç nokta olarak Event Hubs kullanıyorsanız, bu olay hub 'ının üretilen iş birimlerini , IoT Hub ileti yönlendirme aracılığıyla gönderilmesini planladığınız olayların giriş işlemesini işleyebilecek şekilde yapılandırmanız gerekir. benzer şekilde, bir Service Bus kuyruğu bitiş noktası olarak kullanıldığında, bir sıranın, tüketicileri görünene kadar tüm verileri tutabileceği şekilde maksimum boyutu yapılandırmanız gerekir. IoT çözümünüzü ilk kez yapılandırdığınızda, ek uç noktalarınızı izlemeniz ve gerçek yük için gereken ayarlamaları yapmanız gerekebilir.

IoT Hub, protokollerde birlikte çalışabilirlik için tüm cihazdan buluta mesajlaşma için ortak bir biçim tanımlar. Bir ileti aynı uç noktayı işaret eden birden çok yol ile eşleşiyorsa, IoT Hub ileti yalnızca bir kez bu uç noktaya teslim edilir. bu nedenle, Service Bus kuyruğunuza veya konusunda yinelenenleri kaldırmayı yapılandırmanız gerekmez. Bölümlenmiş sıralarda, Bölüm benzeşimi ileti sıralamasını garanti eder. İleti yönlendirmeyi nasıl yapılandıracağınızıöğrenmek için bu öğreticiyi kullanın.

Yönlendirme uç noktaları

IoT Hub 'ı, Event Hubs ile uyumlu bir varsayılan yerleşik uç noktaya (iletiler/olaylar) sahiptir. Aboneliğinizdeki diğer hizmetleri IoT Hub bağlayarak, iletileri yönlendirmek için Özel uç noktalar oluşturabilirsiniz.

Her ileti, yönlendirme sorguları eşleşen tüm uç noktalara yönlendirilir. Diğer bir deyişle, bir ileti birden çok uç noktaya yönlendirilebilir.

Özel uç noktanıza güvenlik duvarı yapılandırmalarına sahipseniz, Microsoft 'un güvendiği ilk taraf özel durumunu kullanmayı düşünün

IoT Hub Şu anda aşağıdaki uç noktaları desteklemektedir:

  • Yerleşik uç nokta
  • Azure Depolama
  • Service Bus kuyruklar ve Service Bus konuları
  • Event Hubs

Yönlendirme uç noktası olarak yerleşik uç nokta

Yerleşik uç noktadan (iletiler/olaylar) cihazdan buluta iletileri almak için standart Event Hubs tümleştirme ve SDK 'lar kullanabilirsiniz. Bir yol oluşturulduktan sonra, bu uç nokta için bir yol oluşturulmadığı takdirde veriler yerleşik uç noktaya akar.

yönlendirme uç noktası olarak Azure Depolama

iki depolama hizmeti vardır IoT Hub-- Azure Blob Depolama ve Azure Data Lake Storage 2. (ADLS 2.) hesaplarına iletileri yönlendirebilir. Azure Data Lake Storage hesapları, blob depolama alanı üzerinde oluşturulmuş hiyerarşik ad alanıetkinleştirilmiş depolama hesaplarıdır. Bunların her ikisi de depolama alanı için blob 'ları kullanır.

IoT Hub, verileri Apache Avro biçiminde ve JSON biçiminde Azure Depolama yazmayı destekler. Varsayılan değer AVRO ' dir. JSON kodlaması kullanılırken, ileti sistemi özelliklerindeContentType öğesini Application/JSON ve Contentenencoding olarak UTF-8 olarak ayarlamanız gerekir. Bu değerlerin her ikisi de büyük/küçük harfe duyarsızdır. İçerik kodlaması ayarlanmamışsa, IoT Hub iletileri temel 64 kodlu biçimde yazar.

Kodlama biçimi yalnızca BLOB depolama uç noktası yapılandırıldığında ayarlanabilir; Mevcut bir uç nokta için düzenlenemez. Varolan bir uç nokta için kodlama biçimlerini değiştirmek için, Özel uç noktayı istediğiniz biçimde silip yeniden oluşturmanız gerekir. Bir yardımcı strateji, istediğiniz kodlama biçiminizle yeni bir özel uç nokta oluşturmak ve bu uç noktaya paralel bir yol eklemek olabilir. Bu şekilde, var olan uç noktasını silmeden önce verilerinizi doğrulayabilirsiniz.

IoT Hub oluşturma veya güncelleştirme REST API, özellikle Routingstoragecontainerproperties, Azure Portal, Azure CLIveya Azure PowerShellkullanarak kodlama biçimini seçebilirsiniz. Aşağıdaki görüntüde Azure portal kodlama biçiminin nasıl ayarlanacağı gösterilmektedir.

BLOB depolama uç noktası kodlama

Toplu iş iletileri IoT Hub ve yığın belirli bir boyuta ulaştığında veya belirli bir süre geçtiğinde verileri depolamaya yazar. IoT Hub varsayılan olarak aşağıdaki dosya adlandırma kuralına sahiptir:

{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}

Herhangi bir dosya adlandırma kuralını kullanabilirsiniz, ancak listelenen tüm belirteçleri kullanmanız gerekir. Yazılacak veri yoksa IoT Hub boş bir bloba yazılır.

Tüm Blobların veya dosyaların bölüm varsayımlarını yapmadan okunmalarını sağlamak için Blobları veya dosyaları listeleyip daha sonra bu dosyaların üzerinde değişiklik yapmanızı öneririz. Bölüm aralığı, Microsoft tarafından başlatılan bir yük devretme veya el ile yük devretmeIoT Hub değişebilir. Dosya listesi için Blobların listesini veya ADLS 2. API listesini listelemek Için, LISTE bloblarını API 'sini kullanabilirsiniz. Lütfen kılavuz olarak aşağıdaki örneğe bakın.

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);
        }
    }
}

Azure Data Lake Gen2 uyumlu bir depolama hesabı oluşturmak için yeni bir v2 depolama hesabı oluşturun ve aşağıdaki görüntüde gösterildiği gibi Gelişmiş sekmesinde hiyerarşik ad alanı alanında etkin ' i seçin:

Azure Date Lake Gen2 Storage seçin

Service Bus yönlendirme uç noktası olarak kuyruklar ve Service Bus konuları

IoT Hub uç noktaları olarak kullanılan Service Bus kuyrukları ve konuları, oturumlara veya yinelenen algılamanın etkin olmasını gerektirmemelidir. Bu seçeneklerden biri etkinse, uç nokta Azure portal ulaşılamaz olarak görünür.

Yönlendirme uç noktası olarak Event Hubs

Yerleşik Event Hubs uyumlu uç noktasından ayrı olarak, verileri Event Hubs türündeki özel uç noktalara de yönlendirebilirsiniz.

Yönlendirilen verileri okuma

Bu öğreticiyiizleyerek bir rota yapılandırabilirsiniz.

Bir uç noktadan ileti okumayı öğrenmek için aşağıdaki öğreticileri kullanın.

Geri dönüş yolu

Geri dönüş yolu, var olan yolların herhangi birine (iletiler/olaylar) Event Hubsile uyumlu olan herhangi bir mevcut Event Hubs rotadaki sorgu koşullarını karşılamayan tüm iletileri gönderir. İleti yönlendirme açıksa, geri dönüş yolu özelliğini etkinleştirebilirsiniz. Bir yol oluşturulduktan sonra, bu uç nokta için bir yol oluşturulmadığı takdirde veriler yerleşik uç noktaya akar. Yerleşik uç noktaya bir yol yoksa ve bir geri dönüş yolu etkinleştirilirse, yalnızca rotalardaki sorgu koşullarına uymamaları, yerleşik uç noktaya gönderilir. Ayrıca, mevcut tüm yollar silinirse, tüm verileri yerleşik uç noktada almak için geri dönüş yolunun etkinleştirilmesi gerekir.

Azure portal >Ileti yönlendirme dikey penceresinde geri dönüş yolunu etkinleştirebilir/devre dışı bırakabilirsiniz. Ayrıca, geri dönüş yolu için özel bir uç nokta kullanmak üzere Fallbackrouteproperties için Azure Resource Manager de kullanabilirsiniz.

Telemetri olmayan olaylar

Cihaz telemetrisine ek olarak, ileti yönlendirme Ayrıca cihaz ikizi değişiklik olayları, cihaz yaşam döngüsü olayları, dijital ikizi değişiklik olayları ve cihaz bağlantısı durum olaylarının gönderilmesini de sağlar. Örneğin, veri kaynağı cihaz ikizi değişiklik olayları olarak ayarlanmış bir yol oluşturulduysa, IoT Hub cihaz ikizi 'deki değişikliği içeren uç noktaya iletiler gönderir. Benzer şekilde, veri kaynağı cihaz yaşam döngüsü olaylarına ayarlanmış bir yol oluşturulduysa, IoT Hub cihazın silinip silinmediğini veya oluşturulduğunu belirten bir ileti gönderir. Azure ıot Tak ve kullan'nin bir parçası olarak, bir geliştirici veri kaynağı ile dijital ikizi değişiklik olayları olarak ayarlanmış yollar oluşturabilir IoT Hub ve bir Digital ikizi özelliği ayarlandığında veya değiştirildiğinde, dijital bir ikizi değiştirilirse veya temeldeki cihaz ikizi için bir değişiklik olayı gerçekleştiğinde ileti gönderebilir. Son olarak, veri kaynağı Cihaz bağlantı durumu olayları olarak ayarlanmış bir yol oluşturulduysa IoT Hub cihazın bağlanıp bağlanmadığını ya da bağlantısının kesileceğini belirten bir ileti gönderir.

IoT Hub Ayrıca, bu olaylara göre gerçek zamanlı tümleştirmeleri ve iş akışlarının otomatikleştirilmesini desteklemek üzere cihaz olaylarını yayımlamak için Azure Event Grid ile tümleşir . Senaryonuza en uygun olanı öğrenmek için ileti yönlendirme ve Event Grid arasındaki önemli farklılıkları inceleyin.

Cihaz bağlantısı durum olayları için sınırlamalar

Cihaz bağlantısı durum olaylarını almak için bir cihazın cihazdan buluta gönderme telemetrisi veya IoT Hub ile buluttan cihaza alma iletisi işlemi çağırması gerekir. Ancak, bir cihaz IoT Hub ile bağlantı kurmak için AMQP protokolünü kullanıyorsa, cihazın buluttan cihaza alma iletisi işlemi çağırmasını öneririz, aksi takdirde bağlantı durumu bildirimleri birkaç dakika geciktirilebilir. Cihazınız MQTT protokolüyle bağlanıyorsa IoT Hub, buluttan cihaza bağlantıyı açık tutar. AMQP için buluttan cihaza bağlantıyı açmak için, zaman uyumsuz API al' ı çağırın.

Cihaz telemetri gönderdiği sürece cihazdan buluta bağlantısı açık kalır.

Cihaz bağlantısı titreşiyorsa, cihazın sık bağlanıp bağlantısı kesiliyorsa, IoT Hub her bir bağlantı durumunu göndermez, ancak titreşme durduruluncaya kadar, 60sec 'in düzenli bir anlık görüntüsüne alınmış geçerli bağlantı durumunu yayınlar. Aynı bağlantı durumu olayını farklı sıra numaralarıyla veya farklı bağlantı durumu olaylarıyla alma, cihaz bağlantı durumunda bir değişiklik olduğu anlamına gelir.

Yolları test etme

Yeni bir rota oluşturduğunuzda veya mevcut bir yolu düzenlediğinizde, rota sorgusunu örnek bir iletiyle test etmelisiniz. Tek seferde tüm yolları test edebilir veya test sırasında uç noktalara hiçbir ileti yönlendirilemez. Azure portal, Azure Resource Manager, Azure PowerShell ve Azure clı test için kullanılabilir. Sonuçlar, örnek iletinin sorguyla eşleşip eşleşmediğini, iletinin sorguyla eşleşmedi olduğunu veya örnek ileti ya da sorgu söz dizimi yanlış olduğu için test çalıştırılamadı sınamasını belirlemesine yardımcı olur. Daha fazla bilgi için bkz. Test rotası ve tüm yolları testetme.

En az bir kez tesliminde sıralama garantisi

İleti yönlendirme IoT Hub sıralı ve en az bir kez bitiş noktalarına ileti teslimi garantisi sağlar. Bu, yinelenen iletiler olabileceği ve özgün ileti sıralamasını yeniden aktarılan bir dizi mesaj olabileceği anlamına gelir. Örneğin, özgün ileti sırası [1, 2, 3, 4] ise, [1, 2, 1, 2, 3, 1, 2, 3, 4] gibi bir ileti sırası alabilirsiniz. Sıralama garantisi, [1] iletisini almanız durumunda her zaman [2, 3, 4] gelmelidir.

İleti yinelemelerini işlemek için, genellikle bir cihaz veya modül olan kaynak noktasındaki iletinin uygulama özelliklerinde benzersiz bir tanımlayıcı damgalaması önerilir. İletileri kullanan hizmet, bu tanımlayıcıyı kullanarak yinelenen iletileri işleyebilir.

Gecikme süresi

Yerleşik uç noktaları kullanarak cihazdan buluta telemetri iletilerini yönlendirdiğinizde, ilk yol oluşturulduktan sonra uçtan uca gecikmede hafif bir artış vardır.

Çoğu durumda, gecikmede ortalama artış 500 MS 'den düşüktür. Yönlendirmeyi kullanarak gecikme süresini izleyebilirsiniz : iletiler/olaylar için ileti gecikmesi veya D2C. endpoints. Latency. builtIn. Events IoT Hub ölçümü. Birinci bir yol oluşturulması veya silinmesi, uçtan uca gecikme süresini etkilemez.

İzleme ve sorun giderme

IoT Hub, Yönlendirme ve uç noktalarla ilgili olarak, hub 'ınızın ve gönderilen iletilerinizin sistem durumuna ilişkin bir genel bakış sunan çeşitli ölçümler sağlar. İşlevsel kategoriye göre bölünmüş tüm IoT Hub ölçümlerinin bir listesi için bkz. izleme verileri başvurusunda ölçümler. Bir yönlendirme sorgusunun değerlendirmesi sırasında oluşan hataları ve IoT Hub kaynak günlüklerinde rotalar kategorisiyleIoT Hub tarafından algılanan uç nokta durumunu izleyebilirsiniz. IoT Hub ile ölçümleri ve kaynak günlüklerini kullanma hakkında daha fazla bilgi için bkz. Monitor IoT Hub.

Uç noktaların sistem durumunu almak Için uç nokta durumu Al REST API kullanabilirsiniz.

Yönlendirme için sorun giderme kılavuzunu , daha fazla ayrıntı ve sorun giderme için destek için kullanın.

Sonraki adımlar