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, ioT verilerinizi diğer kullanım örneklerinin yanında veri analizi, depolama ve görselleştirmeler için kullanarak uçtan uca çözümler oluşturabilirsiniz.
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:
- Yönlendirme hedefi olarak ad alanı konusu:
- Tüm MQTT iletilerinin yönlendirildiği bir Event Grid ad alanı konusu oluşturun.
- Bu iletileri desteklenen Azure hizmetlerinden birine veya özel web kancalarına ya da kuyruk türünde bir olay aboneliğine yönlendirmek için gönderme türünde bir olay aboneliği oluşturarak iletileri doğrudan uygulamanız aracılığıyla ad alanı konusundan çekin.
- İlk adımda oluşturduğunuz konuya başvuran yönlendirme yapılandırmasını ayarlayın.
- Yönlendirme hedefi olarak özel konu:
- Tüm MQTT iletilerinin yönlendirildiği bir Event Grid özel konusu oluşturun. Bu konunun yönlendirme için Event Grid özel konu gereksinimlerini karşılaması gerekiyor
- Bu iletileri desteklenen Azure hizmetlerinden birine veya özel bir uç noktaya yönlendirmek için bir Event Grid olay aboneliği oluşturun.
- İlk adımda oluşturduğunuz konuya başvuran yönlendirme yapılandırmasını ayarlayın.
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 | Yes | 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 "Event Grid 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:
- Azure portalında ad alanınıza gidin.
- Yönlendirme'nin altında Yönlendirmeyi Etkinleştir'i işaretleyin.
- Konu türü altında Ad alanı konusu veya Özel konu'ya tıklayın
- Konu başlığı altında, oluşturduğunuz ve tüm MQTT iletilerinin yönlendirildiği konuyu seçin.
- Özel konular için, listede yalnızca yönlendirme için Event Grid özel konu gereksinimlerini karşılayan konular gösterilir
- Özel konu seçildiyse, Teslim için Yönetilen Kimlik bölümü görüntülenir. MQTT iletilerini özel konuya teslim ederken MQTT aracısının kimliğini doğrulamak için kullanılan kimlik için aşağıdaki seçeneklerden birini belirleyin:
- Hiçbiri: Bu durumda, özel konu başlığında kendinize "Event Grid Veri Göndereni" rolünü atamanız gerekir.
- Sistem tarafından atanan kimlik: Bu durumda, ön koşul olarak ad alanında sistem tarafından atanan kimliği etkinleştirmeniz ve özel konuda sistem tarafından atanan kimliğe "EventGrid Veri Göndereni" rolünü atamanız gerekir.
- Kullanıcı tarafından atanan kimlik: Bu durumda, ön koşul olarak ad alanında kullanıcı tarafından atanan kimliği etkinleştirmeniz ve özel konuda seçili kimliğe "EventGrid Veri Göndereni" rolünü atamanız gerekir.
- Kullanıcı tarafından atanan kimlik seçildiyse, istediğiniz kimliği seçmenizi sağlayan bir açılan liste görüntülenir.
- Uygula’yı seçin.
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 Event Grid 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ıç:
- Öğretici: MQTT iletilerini ad alanı konularını kullanarak Azure Event Hubs'a yönlendirme
- Öğretici: Özel konuları kullanarak MQTT iletilerini Azure İşlevleri yönlendirme