Azure Event Grid'de MQTT İletilerini Yönlendirme

Event Grid, daha fazla işlem için MQTT iletilerinizi Azure hizmetlerine veya web kancalarına yönlendirmenizi sağlar. Buna göre, diğer kullanım örneklerinin yanında veri analizi, depolama ve görselleştirmeler için IoT verilerinizden yararlanarak uçtan uca çözümler oluşturabilirsiniz.

Diagram of the MQTT message routing.

Yönlendirme özelliğini nasıl kullanabilirim?

İstemcilerinizden gelen iletileri bir Azure hizmetine veya özel uç noktanıza yönlendirmek, bu verilerin avantajlarını en üst düzeye çıkarmanızı sağlar. Bu özelliğin avantajlarından yararlanmak için birçok kullanım örneklerinden bazıları şunlardır:

  • Veri Analizi: Çözümünüzü iyileştirmek için istemcilerinizden yönlendirilen iletileri ayıklayın ve analiz edin. Örneğin, gecikmeleri ve daha fazla hasarı önlemek için makinelerinizin telemetri verilerini analiz ederek hatalar oluşmadan önce bakım zamanlamasını tahmin edin.
  • Sunucusuz uygulamalar: İstemcilerinizden yönlendirilen iletilere göre sunucusuz bir işlev tetikler. Örneğin, bir hareket algılayıcısı bir hareket algıladığında, bunu ele almak için güvenlik personeline bir bildirim gönderin.
  • Veri Görselleştirmeleri: Verileri kolayca temsil etmek ve anlamak ve eğilimleri ve aykırı değerleri vurgulamak için istemcilerinizden yönlendirilen verilerin görselleştirmelerini oluşturun.

Yönlendirme yapılandırması:

Yönlendirme yapılandırması, istemcilerinizden gelen tüm MQTT iletilerinizi bir Event Grid ad alanı konusuna veya Event Grid özel konusuna göndermenizi sağlar. İletiler konuya girdikten sonra, konu başlığındaki iletileri kullanmak için bir olay aboneliği yapılandırabilirsiniz. Bu yapılandırmayı gerçekleştirmek için aşağıdaki üst düzey adımları kullanın:

Diagram of the MQTT message routing to namespace topics.

Diagram of the MQTT message routing to custom topics.

Not

Ad alanında genel ağ erişiminin devre dışı bırakılması MQTT yönlendirmesinin başarısız olmasına neden olur.

Yönlendirme hedefi olarak ad alanı konuları ile özel konular arasındaki fark

Aşağıdaki tabloda, yönlendirme hedefi olarak ad alanı konuları ile özel konular arasındaki fark gösterilmektedir. Her Event Grid kaynağına hangi kotaların ve sınırların dahil olduğunu ayrıntılı bir şekilde çözümlemek için bkz . Kotalar ve sınırlar.

Karşılaştırma noktası Ad alanı konusu Özel konu
Aktarım hızı Yüksek, en fazla 40 MB/sn (giriş) ve 80 MB/sn (çıkış) Düşük, 5 MB/sn'ye kadar (giriş ve çıkış)
Çekme teslimi Yes
Event Hubs'a anında iletme teslimi Evet (önizlemede) Yes
Azure hizmetlerine anında iletme teslimi (İşlevler, Web Kancaları, Service Bus kuyrukları ve konuları, geçiş karma bağlantıları ve depolama kuyrukları) Yes
İleti saklama 7 gün 1 gün
Rol atama gereksinimi MQTT aracısı ve ad alanı konusu aynı ad alanı altında olduğundan gerekli değildir MQTT aracı işlevini barındıran ad alanı ve özel konu farklı kaynaklar olduğundan gereklidir

Yönlendirme için Event Grid özel konu gereksinimleri

Yönlendirme için kullanılan Event Grid özel konusunun aşağıdaki gereksinimleri karşılaması gerekir:

  • Bulut Olay Şeması v1.0'ı kullanacak şekilde ayarlanması gerekir
  • Ad alanıyla aynı bölgede olması gerekir.
  • Yönlendirme yapılandırması uygulanmadan önce kendinize veya Event Grid özel konusunda seçili yönetilen kimliğe "EventGrid Veri Göndereni" rolü atamanız gerekir.
    • Portalda, oluşturulan Event Grid konu kaynağına gidin.
    • "Erişim denetimi (IAM)" menü öğesinde Rol ataması ekle'yi seçin.
    • "Rol" sekmesinde "Event Grid Veri Göndereni" öğesini ve ardından İleri'yi seçin.
    • "Üyeler" sekmesinde +Üyeleri seç'i seçin, ardından görüntülenen "Seç" kutusuna AD kullanıcı adınızı yazın (örneğin, user@contoso.com).
    • AD kullanıcı adınızı ve ardından "Gözden geçir + ata" seçeneğini belirleyin

Azure portal yapılandırması

Yönlendirmeyi yapılandırmak için aşağıdaki adımları kullanın:

Screenshot showing the routing configuration through the portal.

Zenginleştirme yapılandırma yönergeleri için Zenginleştirme portalı yapılandırması'na gidin.

Azure CLI yapılandırması

az resource create --resource-type Microsoft.EventGrid/namespaces --id /subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/namespaces/<Namespace Name> --is-full-object --api-version 2023-06-01-preview --properties @./resources/NS.json

NS.json

"properties": {
	"inputSchema": "CloudEventSchemaV1_0",
	"topicSpacesConfiguration": {
	    "state": "Enabled",           
	    "routeTopicResourceId": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.EventGrid/topics/<Event Grid topic name>",
        "routingIdentityInfo": {
                "type": "UserAssigned", //Allowed values: None, SystemAssigned, UserAssigned
                "userAssignedIdentity": "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<User-assigned identity>" //needed only if UserAssigned was the value of type
            },

	}
}

Zenginleştirme yapılandırma yönergeleri için Zenginleştirme CLI yapılandırması'na gidin.

MQTT ileti yönlendirme davranışı

MQTT iletilerini özel konulara yönlendirirken Event Grid, her iletiyi en az bir kez hemen teslim etmeye çalıştığından dayanıklı teslim sağlar. Bir hata varsa, Event Grid teslimi yeniden denenir veya yönlendirilmesi amaçlanan iletiyi bırakır. Event Grid, olay teslimi için sipariş garantisi vermez, bu nedenle aboneler bunları sipariş dışı alabilir.

Aşağıdaki tabloda, farklı hatalara göre MQTT ileti yönlendirme davranışı açıklanmaktadır.

Hata Hata açıklaması Davranış
TopicNotFoundError MQTT tarafından yönlendirilen tüm iletileri alacak şekilde yapılandırılmış özel konu silindi. Event Grid, yönlendirilmesi amaçlanan MQTT iletisini bırakır.
AuthenticationError MQTT tarafından yönlendirilen iletilerin hedefi olarak yapılandırılan özel konu için EventGrid Veri Göndereni rolü silindi. Event Grid, yönlendirilmesi amaçlanan MQTT iletisini bırakır.
TooManyRequests Saniyede yönlendirilen MQTT iletileri sayısı, özel konu için yayımlama sınırını aşıyor. Event Grid, MQTT iletisini yönlendirmek için yeniden denenir.
ServiceError Sunucunun işletimsel nedenden dolayı beklenmeyen bir sunucu hatası. Event Grid, MQTT iletisini yönlendirmek için yeniden denenir.

Yeniden denemeler sırasında Event Grid, MQTT ileti yönlendirmesi için üstel geri alma yeniden deneme ilkesi kullanır. Event Grid, teslimi en iyi çaba temelinde aşağıdaki zamanlamaya göre yeniden denenir:

  • 10 saniye
  • 30 saniye
  • 1 dakika
  • 5 dakika
  • 10 dakika
  • 30 dakika
  • 1 saat
  • 3 saat
  • 6 saat
  • Her 12 saatte bir

Yeniden teslim için kuyruğa alınan yönlendirilmiş bir MQTT iletisi başarılı olursa, Event Grid en iyi çabayla iletiyi yeniden deneme kuyruğundan kaldırmaya çalışır, ancak yine de yinelenenler alınabilir.

Sonraki adımlar:

Yönlendirme hakkında daha fazla bilgi edinmek için aşağıdaki makaleleri kullanın:

Hızlı Başlangıç:

Kavramlar: