Topic
- MQTT’de topic, bağlı bir istemci için mesajları filtreleyen bir UTF-8 dizesidir. Bir topic, eğik çizgi (/) ile ayrılmış bir veya daha fazla seviyeden oluşur ve bu seviyeler hiyerarşik bir yapıyı takip eder. Topic, istemcilerin ilgilendikleri verilere kolayca ulaşmasını sağlar.
Örnek:- ev/oturma_odasi/sicaklik: Bu topic, evdeki oturma odasının sıcaklık verilerini ifade eder.
- araclar/araba/hiz: Bu topic, araç hız verilerini gösterebilir.
- İstemciler, belirli bir Topic’e abone olarak o topic üzerinde yayınlanan mesajları alır veya bu Topic’e mesaj gönderebilir.
Quality of Service (QoS)
MQTT’de Quality of Service (QoS), mesajların teslim güvenilirlik seviyesini belirler. Üç farklı QoS seviyesi vardır:
- QoS 0 (at most once):
- Mesajların alıcıya en fazla bir defa gönderilmesini sağlar. Mesajlar kablo ile iletilirken herhangi bir onay beklenmez. Bu nedenle, bazı veri kayıpları sorun yaratmıyorsa kullanılabilir.
Yalnızca alıcı ve verici kablo ile bağlıysa kullanılabilir.
- Kullanım Alanı: Sıcaklık gibi sürekli güncellenen ve veri kaybının tolere edilebildiği durumlar.
- QoS 1 (at least once):
- Göndericinin mesajı en az bir kez iletmesini garanti eder. Alıcıdan onay alınana kadar mesaj tekrar gönderilebilir. Aynı verinin birden fazla kez gönderilmesine neden olabilir.
- Kullanım Alanı: Verinin kaybolmamasının kritik olduğu, ancak bazı tekrarların kabul edilebilir olduğu durumlar (örneğin, alarm bildirimleri).
- QoS 2 (exactly once):
- Güvenilir seviyedir ve mesajın yalnızca bir kez teslim edilmesini sağlar. Gönderilen mesaj, onaylanan paketlerle kesinleştirilir. Bu nedenle veri kaybı veya tekrar gönderim yaşanmaz, ancak daha uzun sürer.
- Kullanım Alanı: Hassas veri aktarımı gereken ve veri tekrarı istenmeyen durumlar (örneğin, finansal işlemler).
Retain
- Retain özelliği, bir mesajın kaydedilmesi ve daha sonra yeni bağlanan istemcilere iletilmesi anlamına gelir. Eğer bir mesaj retain (sakla) bayrağı ile gönderilirse, bu mesaj MQTT Broker’ında kaydedilir ve o Topic’e bağlanan her yeni istemciye ilk olarak bu retain edilen mesaj iletilir.
- Örnek: “User” şeklinde bir mesaj retain true iken gönderildiğinde, broker bu mesajı saklar. Sonrasında retain false iken birkaç farklı mesaj gönderilmiş olabilir. Tekrar login olduğunuzda, retained olan “User” mesajını ilk olarak göreceksiniz. Bu retained mesajı silmek için, retain true ile boş (sıfır byte) bir mesaj gönderilmelidir. Böylece “User” mesajının kaydı silinmiş olur ve bir daha login olduğunuzda herhangi bir retained mesaj görmezsiniz.
Retain özelliği, belirli verilerin yeni bağlanan istemcilere hızlıca iletilmesini sağlar ve en son durum bilgisinin saklanması gerektiğinde kullanışlıdır.