Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 8488|Yanıt: 0

Birkaç EMQTT bilgi noktası

[Bağlantıyı kopyala]
Yayınlandı 15.02.2019 10:25:09 | | |
Metne başlamadan önce, internet kullanıcısı "Xiaolong"a ve emqtt.io grubundaki internet kullanıcılarına yardımları için teşekkür etmem gerekiyor, MQTT kullanmaya yeni başladım. Anlamadığım birçok şey var, emqtt.io grubundaki çözümü sorduğumda, "Xiaolong" bana bazı MQTT bilgi noktalarını ayrıntılı bir şekilde açıkladı ve çözümler sundu, çok teşekkür ederim. Bence bahsedilen bazı şeyler yeni başlayanlar için hâlâ çok faydalı, bu yüzden referans için "Xiaolong" ile sohbet geçmişimin bir özeti burada.

Soru 1: MCU'nun önbelleği ve işlem gücü sınırlıysa, mesajları aynı anda göndermek imkansızdır, bu durumda mesajları MQTT üzerinden nasıl yayınlar?
Öncelikle, yayınlama protokolünün başlığını derleyin, içindeki yükün uzunluğunu yazın, TCP üzerinden gönderin ve ardından yükü yavaş yavaş gönderin. Toplam yük uzunluğunu alamıyorsan, bu zordur. Bir yayınlama protokolü raporu gönderdiğiniz için, sunucu yükün başındaki uzunluğunu okuduktan sonra, gerekli uzunluğa ulaşana kadar okumaya devam eder ve ardından yayınlama sayılır. Bu nedenle, önce yayınladığınız içeriğin uzunluğunu doğrulamak, ardından yayınlama paket başlığını gruplamak, yük uzunluğunu tcp:send(head) olarak doldurmak ve ardından yükü teker teker, örneğin 1k göndermek ya da verileri normal tcp'ye göre göndermek ve yayınlama bitmiş olsa bile sonuna kadar göndermek. Sonraki gönderme TCP katmanına aittir ve müdahale etmenize gerek yoktur. TCP katmanında gönderme başarısız olursa, sokette bir sorun olmalı, bağlantı bozulur, MQTT sunucusuna yeniden bağlanmanız gerekir, tamamlanmazsa sunucu oturumu da sona erer, yani sunucu veriyi almamıştır. Yeniden bağlanın, mesajı tekrar göndermeniz gerekiyor, bağlantı kesildiği sürece yeniden bağlanmanız gerekiyor, veriyi tekrar göndermek isteyip istemediğiniz, önceki veriyi kaydedip etmediğinize bağlı. Ayrıca, mesaj önemliyse, sunucunun mesajı almasını sağlamak için qos=1 veya 2 kullanabilirsiniz, qos=1 bir gidiş-dönüş gerektirir, qos=2 dört gidiş-dönüş gerektirir, qos=0 ise çok basit, gönderdiğiniz sürece fark etmez.

Soru 2: MQTT için çok fazla açık kaynak var mı?

Bağlantı girişi görünür.Çok fazla var

Soru 3: MQTT genellikle neden süreklilik fonksiyonları sağlamaz?

MQTT protokolü, cihazın çevrimiçi tasarımına göre tasarlanmıştır ve veriler bellekte saklanır

Soru 4: MQTT bellek tüketiyor mu?

MQTT daha fazla bellek tüketir ve emqtt'nin ölçülen verisi şudur: 38W, bellek 14G, CPU %15

Soru 5: Seans ile danışan arasındaki ilişki nedir?

Örneğin, bir kartınız varsa, istemci olarak MQTT sunucusuna bağlanmak için bir MQTT bağlantı talebi başlatır; örneğin, bu bir EMQTT hizmetidir; EMQTT sunucusu bu kartın bağlantı talebini aldıktan sonra, TCP katmanındaki kartla TCP bağlantısı kurur ve EMQTT içinde bu kartla iletişim kurmak için bir süreç oluşturulur ve oturum adı verilen bir süreç de oluşturulur. Bu sessoin, bu board'un aboneliğini yönetmeye uzmanlaşmış bir temadır ve diğer kurullar da, ilgilenen konuyu yayınlarsa, bu oturum abone konuyu alırsa ve istemcinin hâlâ hayatta olduğunu tespit ederse, verileri TCP üzerinden bu board'a gönderir; eğer istemcinin artık orada olmadığı tespit edilirse, yani yönetim kurulu ve sunucu bozulmuşsa. Sonra oturum, alınan abonelik konusunu önce oturumda kaydeder ve bir sonraki pano bağlandığında, cleansession=false durumunda, oturum temizlenmez ve bu sefer bağlandığında, önceki alınan abonelik mesajı panoya gönderilir, muhtemelen bu da bunun anlamıdır.

Soru 6: emqtt bağlı istemcinin aynı olduğunu nasıl biliyor?

Bağlanırken bir istemci kimliği ayarlamanız gerekir, bu ID ayarlanmamış bırakılabilir, ayarlanmazsa emqtt sunucu tarafında otomatik olarak benzersiz bir kimlik oluşturulur, oturum kullanmak istiyorsanız benzersiz bir ID'niz olmalıdır, IMEI kullanabilirsiniz. Çevrimdışı mesaj almak zorundaysanız, belirli bir kimlik kullanmalısınız.

Soru 7: EMQTT oturum süresi değiştirilebilir mi?

Seans süresini değiştirebilirsiniz, şimdi 48 saat, bir haftaya çıkarabilirsiniz, kalıcı olmasını istiyorsanız, emqtt uygun değil.

Soru 8: emqtt'nin erişim izni yapılandırma dosyasında mı yazıldı?

etc/acl.config

Soru 9: EMQTT'nin dağılımı nedir?

Dağıtık, sadece birkaç sunucunuzu, herhangi birini veya birkaçını birbirine bağlamak demektir; hepsi bozuk değilse, emqtt normal çalışabilir. EMQTT verileri birkaç düğüm tarafından paylaşılır ve bir düğümde sorun olursa, veri kaybolmaz, ancak düğümdeki oturum verileri kaybolur.









Önceki:EMQX (EMQTTD) mesaj kuyruğu ile ilk tanışma
Önümüzdeki:jQuery çalışma notları
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com