MQTT Nedir ve Yapısı

MQTT Nedir?

MQTT(Message Queuing Telemetry Transport) protokolü, internette yaygın olarak kullanılan makinalar arası (M2M) mesaj tabanlı bir protokoldür.
Lightweight oluşu ve düşük kaynak tüketmesiyle Internet of Things(IoT) ekosisteminde benimsenmiştir. Hemen hemen tüm IoT bulut platformları akıllı nesnelerden veri gönderip almak için MQTT protokolünü desteklemektedir.

Bu protokol, istek(request)-yanıt(response) yapısına dayalı HTTP'ye karşıt olarak yayın(publish)-abone(subscriber) yapısında TCP/IP bağlantısı kurulur.
TCP/IP protokolünün yazılabildiği Linux, Windows, Android, iOS, MacOS işletim sistemlerinde çalışır.


MQTT Mesaj Yapısı

MQTT protokolü yayıncı-abone yapısında bir mesaj yayınlayan bir client (yayıncı) mesajı alan diğer clientlara ayıracaktır (aboneler). Ayrıca, MQTT asenkron protokoldür, bu da mesajı beklerken clientı engellemediği anlamına gelir. HTTP protokolünün aksine, esas olarak eşzamanlı bir protokoldür. MQTT protokolünün bir başka özelliği, istemcinin (abone) ve yayıncının aynı anda bağlı olmasını gerektirmemesidir.


MQTT Yayıncı-Abone Mimarisi

MQTT'deki kilit unsur MQTT brokerıdir. MQTT brokerın asıl görevi, clientlara (abonelere) mesajlar göndermektir. Yani yayıncıdan mesajlar alır ve bu mesajları abonelere gönderir. Mesaj gönderirken, MQTT broker mesajı alacak olan clientları filtrelemek için konuyu(topic) kullanır. Konu bir dizedir ve konu seviyeleri yaratan konuları birleştirmek mümkündür.

Konu(topic) bir yayıncıyı abonelerine bağlayan sanal bir kanala benzer. Bu konu MQTT brokerı tarafından yönetilmektedir. Bu sanal kanal sayesinde, yayıncı abonelerden ayrılmıştır ve istemcilerin(yayıncılar veya aboneler) birbirlerini tanıması gerekmemektedir. Bu yapısı gereği bu protokolü mesaj üreticisine(yayıncı) ve mesaj tüketicisine(abone) doğrudan bağımlılık olmadan çok ölçeklenebilir hale getirir.

MQTT mimarisi aşağıdaki şekildedir:

 

MQTT brokerlarından Mosquitto'nun nasıl kurulacağı ve MQTT'nin nasıl kullanılacağı ile ilgili "Ubuntu üzerinde MQTT Mosquitto broker'ı kurma" yazımı okuyabilirsiniz.

Konuyla ilgili diğer faydalı linkler:

Ubuntu üzerinde MQTT Mosquitto broker'ı kurma

Merhaba,

MQTT iletişimi gerçekleştirmek için server olarak Mosquitto kurulumunu nasıl yapacağımıza bakalım.

1. Ubuntu'ya root ile giriş yapalım

2. Aşağıdaki komut ile mosquitto deposunu ekleyelim

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update

3. Mosquitto broker paketini yüklemek için aşağıdaki komutu çalıştıralım

sudo apt-get install mosquitto

4. MQTT client için geliştirici kütüphanelerini yüklemek için aşağıdaki komutu çalıştıralım

sudo apt-get install libmosquitto-dev

5. MQTT client pketlerini yüklemek için aşağıdaki komutu çalıştıralım

sudo apt-get install mosquitto-clients

6. Mosquitto broker çalışıyor olduğundan emin olalım

sudo service mosquitto status

Servis kontrolü ile ilgili komutlar

  • Servisin yüklü olup olmadığını kontrol etmek için: systemctl list-units | grep mosquitto
  • Servisi başlatmak için: systemctl start mosquitto
  • Servisin durumunu kontrol etmek için: systemctl status mosquitto
  • Servisi durdurmak için: systemctl stop mosquitto
  • Servisi otomatik başlatmak için: systemctl enable mosquitto
  • Servisi otomatik başlatması kapatmak için: systemctl disable mosquitto

7. Test edelim

Aşağıdaki komut ile "mymqtt" konusuna(topic) abone olup dinlemeyi başlatalım 

mosquitto_sub -h localhost -t "mymqtt" -v

İkinci bir terminal açalım. Aşağıdaki komut ile "mymqtt" konusuna mesaj yayınlayalım

mosquitto_pub -h localhost -t "mymqtt" -m "Led On"

"Led On" mesajı ilk terminal ekranında abone olduğumuz "mymqtt" konusunda gözükecektir.