MQTT (Message Queuing Telemetry Transport), yayınlama ve abone olma mantığına dayanan telemetry mesajlasma protokolüdür. Makineler arası haberleÅŸmede kullanılmaktadır. Benzer protokollerden ayrılan en önemli özelliÄŸi ise hafif (lightweight) olması ve bu sayede bir çok platformda rahatlıkla kullanılabilmesidir.
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 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.
Subscriber birimleri mesaj almak için abone olan birimlerdir ve hangi birimlerden hangi mesajları alacaklarını bulutta bulunan broker birimine “topic” olarak bildirirler.
Publisher birimleri mesaj yayınlayan birimlerdir ve yayınlamak istedikleri mesajı, topic bilgisi ile birlikte broker birimine iletirler. Broker, ilgili topic’e üye olan subscriber birimlerine mesajı iletir.
Publisher ve Subscriber birimleri gerekirse birden fazla broker birimi üzerinden diÄŸer birimler ile iletiÅŸim kurabilirler.
MQTT’nin diÄŸer özellikleri:
- Protokol paketlerinin küçük oluÅŸu networkdeki veri trafiÄŸini azaltmaktadır. (En küçük paket 2 byte’dan oluÅŸmaktadır.) Network bu sayede daha verimli kullanılabilmektedir.
- Sistemde 10k publisher ve subscriber birimleri yer alabilmektedir.
- Çift taraflı asenkron mesajlaÅŸma saÄŸlamaktadır. (Http’de serverdan veri alınabilmesi icin sürekli poll edilmesi gerekmektedir.)
- Sınırlı (ram, işlemci, battery v.s.) kaynaklı birimlerde kullanımı uygundur.
- Subscriber ve publisher birimleri için kullanılabilecek düÅŸük boyutlu (30-60kb) bir çok dilde (c, java vs) açık kaynak kütüphaneler mevcuttur.
- Broker server olarak kullanılabilecek bazı hizmetler asagidaki gibidir:
- mosquitto : açık kaynaklı broker server
- m2m.ecliose.org