MQTT Nedir? Nasıl Bir Mimaride Çalışır?
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:
Ubuntu üzerinde MQTT Mosquitto Broker’ı Kurma ve Test Etme
Mosquitto Broker MQTT protokolünü uygulayan açık kaynak kodlu bir message broker uygulamasıdır. Özellikle IoT uygulamalarında sıkça kullanılan Mosquitto ile MQTT iletişimini nasıl gerçekleştirebileceğimizi görmek için Ubuntu üzerinde kurulumunu yapalı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.
Konuyla ilgili diğer faydalı linkler:
1 Comment
fatih
1 Kasım 2017 at 07:34Ellerinize sağlık. Özlü, güzel, dolu dolu anlatmışsınız konuyu.