Dağıtım planlama - Gelişmiş MQTT seçenekleri

Gelişmiş MQTT seçenekleri, MQTT aracısının istemcilerle nasıl etkileşime geçtiğini denetler. Bu ayarlar, bağlantı sırasında aracı ile istemci arasında müzakere edilir ve oturum sona erme süresi, ileti sona erme süresi, maksimum alma sayısı ve etkin tutma süresini içerir. Azure IoT İşlemlerine özgü tek ayar abone kuyruğu sınırıdır. Dağıtımdan önce bu seçenekleri özelleştirmeniz gerekip gerekmediğine karar verin.

Important

Bu seçenekler yalnızca ilk dağıtımda Azure CLI veya Azure portalı kullanılarak yapılandırılabilir. Bunları daha sonra değiştirmek için yeniden dağıtım yapmanız gerekir. Daha fazla bilgi için bkz. Varsayılan Broker'ı özelleştirme.

Birçok senaryoda varsayılan istemci ayarları yeterlidir. MQTT aracısı için varsayılan istemci ayarlarını geçersiz kılmak üzere Broker kaynağındaki advanced.clients bölümünü düzenleyin. Şu anda bu geçersiz kılma, yalnızca IoT Operations'ı az iot ops create komutunu kullanarak dağıttığınızda --broker-config-file bayrağı kullanılarak desteklenir. Daha fazla bilgi için bkz. Gelişmiş MQTT aracı yapılandırması için Azure CLI desteği.

Kullanılabilir ayarların tam listesi için bkz . ClientConfig API başvurusu.

Başlamak için JSON biçiminde bir Broker yapılandırma dosyası hazırlayın. Örneğin:

{
  "advanced": {
    "clients": {
      "maxSessionExpirySeconds": 282277,
      "maxMessageExpirySeconds": 1622,
      "subscriberQueueLimit": {
        "length": 1000,
        "strategy": "DropOldest"
      },
      "maxReceiveMaximum": 15000,
      "maxKeepAliveSeconds": 300
    }
  }
}

Ardından, az iot ops create komutunu --broker-config-file bayrağıyla kullanarak IoT Operations'ı dağıtın. Diğer parametreler kısa süre için atlanır:

az iot ops create ... --broker-config-file <FILE>.json

Abone kuyruğu sınırı

MQTT aracısı, teslim edilmeyi bekleyen QoS 1 (en az bir kez teslimat) iletileri için her aboneye ayrı bir kuyruk tutar. yayımcıdan alınan iletiler bu kuyruğa eklenir. Bunlar, abone tarafından bir PUBACK iletisiyle teslim edildikten ve onaylandıktan sonra kaldırılır. İletiler abonenin kabul ettiğinden daha hızlı ulaşırsa veya abone kalıcı bir oturumla çevrimdışıysa kuyruk büyüyebilir.

MQTT aracısı bellekten tasarruf etmek için bu iletileri diske arabelleğe alabilir, ancak disk arabelleği her zaman kullanılamaz. Disk arabelleği yapılandırılmamış olabilir veya diğer aboneler nedeniyle zaten dolu olabilir. Abone kuyruğu sınırı, tek bir abonenin çok fazla aracı belleği tüketmesini engeller.

Abone kuyruğu sınırı iki ayara sahiptir:

  • Uzunluk: Bir abone için kuyruğa alınabilecek ileti sayısı üst sınırı. Kuyruk doluysa ve yeni bir ileti gelirse, aracı yapılandırılan stratejiye göre bir ileti bırakır.

  • Strateji: Kuyruk dolduğunda aracı nasıl davranır:

    • Yok (varsayılan): İletiler atılmaz. Oturum süresi dolana kadar kuyruk büyüyebilir.
    • DropOldest: Aracı, yeni iletiye yer açmak için kuyruğa en eski iletiyi bırakır.

Note

Abone kuyruğu sınırı giden kuyruğa (aboneye gönderilmeyi bekleyen iletiler) uygulanır. Uçuş içi kuyruk (abone tarafından gönderilen ancak henüz onaylanmamış iletiler) ayrıdır ve MQTT alma üst sınırı ayarı tarafından yönetilir.

Important

Çok bölümlü dağıtımlarda kuyruk sayısı bölüm başına ölçeklendirilir. Her bölüm kendi abone kuyruklarını bağımsız olarak tutar. Tek bir abonenin kuyrukları tarafından tüketilen küme genelindeki toplam bellek, yapılandırılan tek bir sınırın önerdiği değeri aşabilir. Çok bölümlü dağıtımlar için bellek kapasitesini uygun şekilde planlayın.

Yavaş aboneler

Yavaş abone, gelen ileti hızına ayak uyduramaz. Abone iletileri yavaş işlerse, bağlantısı kesilirse veya çevrimdışıysa bu sorun oluşabilir. Abone kuyruğu sınırı, yavaş abonenin çok fazla bellek tüketmesini önlemeye yardımcı olur.

İleti süre sonu

Bu ayar, maxMessageExpirySeconds iletinin süresi dolmadan önce kuyrukta ne kadar süreyle kalabileceğini denetler. bir ileti kuyrukta değerinden maxMessageExpirySecondsdaha uzun süre kalırsa süresi dolar. Broker, süresi dolmuş iletileri aktif olarak temizlemez; bunları ancak kuyruğun başına geldiklerinde atar. Bu pasif temizleme, kuyruğu taramadan bellek kullanımını sınırlanmış durumda tutar.

Oturum süre sonu

Bu maxSessionExpirySeconds ayar, iletilerin süresiz olarak kuyrukta tutulmadığından emin olmak için abone kuyruğu sınırıyla birlikte çalışır. Oturumun süresi dolarsa, ileti aracısı bu oturuma ait kuyruktaki tüm iletileri siler. Oturum süre sonu, çevrimdışı abonelerin sonunda kuyruğun tamamını temizleyerek süresiz olarak bellek tüketmesini engeller.

Maksimum ileti süresi dolumu ve saklanan iletiler

MQTT 5'te, tutulan iletiler pakette belirtilen mesaj sonlandırma süresine riayet eder PUBLISH. Bir süre sonu aralığı ayarlanırsa, aralık geçtikten sonra korunan ileti kaldırılır. Aralık sağlanmazsa, ileti süresiz olarak kullanılabilir durumda kalır.

Bu maxMessageExpirySeconds ayar, korunanlar da dahil olmak üzere tüm iletilere uygulanan ileti süre sonu için genel bir üst sınır tanımlar. Örneğin, maxMessageExpirySeconds saniyeye ayarlanırsa ve korunan bir ileti 1000 saniyelik bir son kullanım süresi belirtirse, ileti yine de 2000 saniye sonra kaldırılır.

varsayılan olarak maxMessageExpirySeconds ayarlanmadı. Bu durumda, iletide açıkça bir süre sonu aralığı tanımlanmadığı sürece korunan iletilerin süresi dolmaz.

Sonraki Adımlar