Cihazdan buluta iletileri farklı uç noktalara göndermek için IoT Hub ileti yönlendirmeyi kullanma

Not

Bu makalede bahsedilen buluttan cihaza mesajlaşma, cihaz ikizleri ve cihaz yönetimi gibi bazı özellikler yalnızca standart IoT Hub 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 nedenler için kullanılabilir:

  • Cihaz telemetri iletilerinin yanı sıra olaylar , cihaz yaşam döngüsü olayları, cihaz ikizi değişiklik olayları, dijital ikiz değişiklik olayları ve cihaz bağlantı durumu olaylarını yerleşik uç noktaya ve özel uç noktalara gönderme. Yönlendirme uç noktaları hakkında bilgi edinin. IoT Tak Çalıştır cihazlardan gönderilen olaylar hakkında daha fazla bilgi edinmek için bkz. Dijital ikizleri IoT Tak Çalıştır anlama.

  • Zengin sorgular uygulayarak verileri çeşitli uç noktalara yönlendirmeden önce filtreleme . İleti yönlendirme, ileti özellikleri ve ileti gövdesinin yanı sıra cihaz ikizi etiketlerini ve cihaz ikizi özelliklerini sorgulamanıza olanak tanır. İleti yönlendirmede 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 gerekir. Uç noktalarınızı Azure portal aracılığıyla yapılandırıyorsanız, sizin için gerekli izinler eklenir. Hizmetlerinizi beklenen aktarım hızını destekleyecek şekilde yapılandırdığınızdan emin olun. Örneğin, Event Hubs'ı özel uç nokta olarak kullanıyorsanız, IoT Hub ileti yönlendirme yoluyla göndermeyi planladığınız olayların girişlerini işleyebilmesi için bu olay hub'ının aktarım hızı birimlerini yapılandırmanız gerekir. Benzer şekilde, uç nokta olarak bir Service Bus Kuyruğu kullanırken, kuyruğun tüketiciler tarafından çıkış yapılana kadar tüm veri girişlerini tutabilmesini sağlamak için en büyük boyutu yapılandırmanız gerekir. IoT çözümünüzü ilk kez yapılandırdığınızda, diğer uç noktalarınızı izlemeniz ve gerçek yük için gerekli ayarlamaları yapmanız gerekebilir.

IoT Hub, protokoller arasında birlikte çalışabilirlik için tüm cihazlardan buluta mesajlaşma için ortak bir biçim tanımlar. İleti aynı uç noktaya işaret eden birden çok yolla eşleşiyorsa, IoT Hub iletiyi bu uç noktaya yalnızca bir kez teslim eder. Bu nedenle, Service Bus kuyruğunuzda veya konunuzda yinelenenleri kaldırmayı yapılandırmanız gerekmez. İleti yönlendirmeyi yapılandırmayı öğrenmek için bu öğreticiyi kullanın.

Yönlendirme uç noktaları

IoT hub'ında Event Hubs ile uyumlu varsayılan bir yerleşik uç nokta (iletiler/olaylar) vardır. Aboneliğinizdeki diğer hizmetleri IoT Hub bağlayarak iletilerin yönlendirilmesi için özel uç noktalar oluşturabilirsiniz.

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

Özel uç noktanızda güvenlik duvarı yapılandırmaları varsa, Microsoft'un güvenilen birinci taraf özel durumunu kullanmayı göz önünde bulundurun.

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

  • Yerleşik uç nokta
  • Azure Storage
  • 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ştirmesini ve SDK'ları kullanabilirsiniz. Bir Yol oluşturulduktan sonra, bu uç noktaya bir Yol oluşturulmadığı sürece veriler yerleşik uç noktaya akmayı durdurur. Hiçbir yol oluşturulmasa bile, iletileri yerleşik uç noktaya yönlendirmek için bir geri dönüş yolu etkinleştirilmelidir. Portalı veya CLI'yi kullanarak hub'ınızı oluşturursanız geri dönüş varsayılan olarak etkinleştirilir.

Yönlendirme uç noktası olarak Azure Depolama

İletileri yönlendirebileceğiniz iki depolama hizmeti IoT Hub vardır: Azure Blob Depolama ve Azure Data Lake Storage 2. Nesil (ADLS 2. Nesil) hesapları. Azure Data Lake Storage hesapları, blob depolamanın üzerine kurulu hiyerarşik ad alanı özellikli depolama hesaplarıdır. Bunların her ikisi de depolama alanları için blob kullanır.

IoT Hub, Azure Depolama'a Apache Avro biçiminde ve JSON biçiminde veri yazmayı destekler. Varsayılan değer AVRO'dur. JSON kodlamasını kullanırken, ileti sistemi özelliklerinde contentType değerini application/json ve contentEncoding değerini UTF-8 olarak ayarlamanız gerekir. Bu değerlerin ikisi de büyük/küçük harfe duyarlı değildir. İçerik kodlaması ayarlanmadıysa, IoT Hub iletileri 64 tabanında kodlanmış 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. Mevcut uç noktanın kodlama biçimlerini değiştirmek için uç noktayı silmeniz ve istediğiniz biçimde yeniden oluşturmanız gerekir. Yararlı stratejilerden biri, istediğiniz kodlama biçimine sahip yeni bir özel uç nokta oluşturmak ve bu uç noktaya paralel bir yol eklemek olabilir. Bu şekilde, mevcut uç noktayı silmeden önce verilerinizi doğrulayabilirsiniz.

Kodlama biçimini rest api oluşturma veya güncelleştirme IoT Hub kullanarak seçebilirsiniz, özellikle RoutingStorageContainerProperties, Azure portal, Azure CLI veya Azure PowerShell. Aşağıdaki görüntüde, Azure portal kodlama biçiminin nasıl seçilir gösterilmektedir.

Blob storage endpoint encoding

IoT Hub, toplu iş belirli bir boyuta ulaştığında veya belirli bir süre geçtiğinde iletileri toplu işler ve depolama alanına veri yazar. IoT Hub varsayılan olarak aşağıdaki dosya adlandırma kuralını kullanır:

{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 yazar.

Tüm blobların veya dosyaların bölüm varsayımı yapılmadan okunmasını sağlamak için blobları veya dosyaları listelemenizi ve sonra bunlar üzerinde yinelemenizi öneririz. Bölüm aralığı, Microsoft tarafından başlatılan yük devretme sırasında veya el ile yük devretme IoT Hub sırasında değişebilir. Blob listesini listelemek için Blobları Listele API'sini veya dosya listesi için AdLS 2. Nesil API'sini listeleyebilirsiniz . Kılavuz olarak aşağıdaki örne 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 2. Nesil ile 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ş sekmesindeki Hiyerarşik ad alanı alanında etkin'i seçin:

Select Azure Date Lake Gen2 storage

Yönlendirme uç noktası olarak Kuyrukları ve Service Bus Konularını Service Bus

IoT Hub uç noktaları olarak kullanılan Service Bus kuyruklarında ve konu başlıklarında Oturumlar veya Yinelenen Algılama etkin olmamalıdır. 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ının dışında, verileri Event Hubs türünde özel uç noktalara da yönlendirebilirsiniz.

Yönlendirilen verileri okuma

Bu öğreticiyi izleyerek bir yol yapılandırabilirsiniz.

Uç noktadan iletileri okumayı öğrenmek için aşağıdaki öğreticileri kullanın.

Geri dönüş yolu

Geri dönüş yolu, mevcut yollardan herhangi birinde sorgu koşullarını karşılamayen tüm iletileri Event Hubs ile uyumlu yerleşik Event Hubs'a (iletiler/olaylar) gönderir. İleti yönlendirme açıksa geri dönüş yolu özelliğini etkinleştirebilirsiniz. Bir yol oluşturulduktan sonra, bu uç noktaya bir yol oluşturulmadığı sürece veriler yerleşik uç noktaya akmayı durdurur. Yerleşik uç noktaya hiç yol yoksa ve bir geri dönüş yolu etkinleştirilirse, yalnızca yollardaki sorgu koşullarıyla eşleşmeyen iletiler yerleşik uç noktaya gönderilir. Ayrıca, tüm mevcut yollar silinirse, yerleşik uç noktadaki tüm verileri almak için geri dönüş yolunun etkinleştirilmesi gerekir.

geri dönüş yolunu Azure portal İleti> Yönlendirme dikey penceresinde etkinleştirebilir/devre dışı bırakabilirsiniz. FallbackRouteProperties için Azure Resource Manager kullanarak geri dönüş yolu için özel bir uç nokta da kullanabilirsiniz.

Telemetri olmayan olaylar

İleti yönlendirme, cihaz telemetrisine ek olarak cihaz ikizi değişiklik olaylarının, cihaz yaşam döngüsü olaylarının, dijital ikiz değişiklik olaylarının ve cihaz bağlantı durumu olaylarının gönderilmesini de sağlar. Örneğin, veri kaynağı cihaz ikizi değişiklik olaylarına ayarlanmış bir yol oluşturulursa, IoT Hub cihaz ikizindeki 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şturulursa IoT Hub cihazın veya modülün silindiğini veya oluşturulduğunu belirten bir ileti gönderir. Cihaz yaşam döngüsü olayları hakkında daha fazla bilgi için bkz . Cihaz ve modül yaşam döngüsü bildirimleri. Azure IoT Tak Çalıştır kullanırken geliştirici, veri kaynağı dijital ikiz değişiklik olaylarına ayarlanmış rotalar oluşturabilir ve IoT Hub bir dijital ikiz özelliği ayarlandığında veya değiştirildiğinde, dijital ikiz değiştirildiğinde veya temel alınan cihaz ikizi için bir değişiklik olayı gerçekleştiğinde iletiler gönderir. Son olarak, veri kaynağı cihaz bağlantı durumu olaylarına ayarlanmış bir yol oluşturulursa, IoT Hub cihazın bağlı olup olmadığını veya bağlantısının kesildiğini belirten bir ileti gönderir.

IoT Hub ayrıca bu olaylara dayalı gerçek zamanlı tümleştirmeleri ve iş akışlarının otomasyonunu desteklemek üzere cihaz olaylarını yayımlamak için Azure Event Grid ile tümleşir. Senaryonuz için en uygun olan seçeneği öğrenmek için ileti yönlendirme ile Event Grid arasındaki önemli farklara bakın.

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

Cihaz bağlantı durumu olayları, MQTT veya AMQP protokolü kullanılarak ya da WebSockets üzerinden bu protokollerden birini kullanarak bağlanan cihazlar için kullanılabilir. Yalnızca HTTPS ile yapılan istekler cihaz bağlantı durumu bildirimlerini tetiklemez. IoT Hub cihaz bağlantı durumu olaylarını göndermeye başlayabilmesi için, bir bağlantı açıldıktan sonra cihazın buluttan cihaza ileti alma işlemini veya cihazdan buluta telemetri gönderme işlemini çağırması gerekir. Azure IoT SDK'ları dışında, MQTT'de bu işlemler uygun mesajlaşma konularındaki ABONE Olma veya YAYıMLAMA işlemlerine eşit olur. AMQP üzerinden bunlar , uygun bağlantı yollarına ileti eklemek veya aktarmak için yeterlidir.

IoT Hub her bir cihazın bağlanıp bağlantısını kesmeyi raporlamaz, bunun yerine düzenli 60 saniyelik anlık görüntüde alınan geçerli bağlantı durumunu yayımlar. Aynı bağlantı durumu olayının farklı sıra numaralarıyla alınması veya farklı bağlantı durumu olaylarının her ikisi de 60 saniyelik pencere sırasında cihaz bağlantı durumunda bir değişiklik olduğu anlamına gelir.

Test yolları

Yeni bir yol oluşturduğunuzda veya mevcut bir yolu düzenlediğinizde, yol sorgusunu örnek bir iletiyle test etmelisiniz. Tek tek yolları test edebilir veya tüm yolları aynı anda test edebilirsiniz ve test sırasında uç noktalara hiçbir ileti yönlendirilmemiştir. test için Azure portal, Azure Resource Manager, Azure PowerShell ve Azure CLI kullanılabilir. Sonuçlar, örnek iletinin sorguyla eşleşip eşleşmediğini, iletinin sorguyla eşleşmediğini veya örnek ileti veya sorgu söz dizimi yanlış olduğundan testin çalıştırılamadığını belirlemeye yardımcı olur. Daha fazla bilgi edinmek için bkz . Test Yolu ve Tüm yolları test etme.

Gecikme süresi

Yerleşik uç noktaları kullanarak cihazdan buluta telemetri iletilerini yönlendirdiğinizde, ilk yol oluşturulduktan sonra uçtan uca gecikme süresinde hafif bir artış olur.

Çoğu durumda gecikme süresindeki ortalama artış 500 ms'nin altındadır. İletiler/olaylar için Yönlendirme: ileti gecikme süresi veya d2c.endpoints.latency.builtIn.events IoT Hub ölçümünü kullanarak gecikme süresini izleyebilirsiniz. İlk yoldan sonra herhangi bir yolun oluşturulması veya silinmesi uçtan uca gecikme süresini etkilemez.

İzleme ve sorun giderme

IoT Hub, hub'ınızın ve gönderilen iletilerinizin durumuna genel bir bakış sağlamak için yönlendirme ve uç noktalarla ilgili çeşitli ölçümler sağlar. IoT Hub ölçümlerinin işlev kategorilerine göre ayrılmış bir listesi için bkz. İzleme verileri başvurusundaki ölçümler. IoT Hub’da yönlendirme sorgusunun değerlendirilmesi sırasında ortaya çıkan hataları ve uç nokta durumunu IoT Hub kaynak günlüklerinin yollar kategorisinden takip edebilirsiniz. IoT Hub’da ölçüm ve kaynak günlüğü kullanımı hakkında daha fazla bilgi edinmek için bkz. IoT Hub’ı izleme.

Uç noktaların sistem durumunu almak için Uç Nokta Durumunu Alma REST API’sini kullanabilirsiniz.

Daha fazla ayrıntıya ulaşmak ve yönlendirme sorunlarını giderme konusunda destek almak için bkz. Yönlendirme sorunlarını giderme kılavuzu.

Sonraki adımlar