MQTTX, EMQ'nun geliştirdiği açık kaynaklı bir MQTT istemcisidir ve üç biçimde gelir: bir masaüstü uygulaması (Windows, macOS, Linux), mqttx adlı bir komut satırı aracı ve bir tarayıcı sürümü. TCP, TLS, WebSocket ve güvenli WebSocket üzerinden MQTT 3.1, 3.1.1 ve 5.0 konuşur ve yalnızca EMQX ile değil, standarda uyan her broker ile çalışır.
Bu rehber, geliştiricilerin bir broker'ı test ederken gerçekten kullandığı kısımları ele alıyor: bağlantıları kurmak, MQTT 5 özelliklerini (property) incelemek, payload'ları script'lerle dönüştürmek ve CLI ile otomatik pub/sub, simüle edilmiş cihazlar ve mqttx bench yük testleri çalıştırmak.
MQTTX kurulumu
| Sürüm | Kurulum | En uygun kullanım |
|---|---|---|
| Masaüstü | mqttx.app adresinden indirin veya macOS'te brew install --cask mqttx | Etkileşimli hata ayıklama, payload'ları yan yana karşılaştırma |
| CLI | npm install -g mqttx-cli veya brew install emqx/mqttx/mqttx-cli | Script'ler, CI job'ları, SSH oturumları, hızlı benchmark'lar |
| Web | Web build'ini kendiniz barındırın veya barındırılan demoyu kullanın | Yazılım kuramadığınız makineler |
CLI'ı mqttx --version ile kontrol edin. Hiçbir şey kurmadan tarayıcıdan hızlıca test etmek istiyorsanız, bu sitedeki online MQTT istemcisi WebSocket üzerinden aynı temel pub/sub işlemlerini yapar.
Masaüstü uygulaması: production ile aynı bağlantılar
New Connection'a tıklayın ve alanları cihazlarınızın kullanacağı değerlerle birebir doldurun — production'dan farklı bir test hiçbir şey kanıtlamaz.
| Alan | Örnek | Notlar |
|---|---|---|
| Host | mqtt:// + broker.connectmq.com | Protokol listesinden mqtts://, ws:// veya wss:// seçin |
| Port | 1883 / 8883 / 8083 / 8084 | WebSocket portlarında ayrıca Path /mqtt gerekir |
| Client ID | testmqtt-desktop-01 | Benzersiz olmalı; aynı ID'ye sahip istemciler birbirini düşürür |
| Username / Password | broker'ınızın kimlik bilgileri | Anonim test endpoint'leri için boş bırakın |
| SSL/TLS | 8883 ve 8084 için açık | Broker özel bir CA kullanıyorsa CA dosyasını yükleyin |
| MQTT Version | 5.0 | Eski firmware'i taklit etmek için 3.1.1'e geçin |
| Clean Start / Session Expiry | kapalı / 300 | Kalıcı oturumları test etmek için gerekli |
Advanced altında keep-alive, bağlantı zaman aşımı, otomatik yeniden bağlanma ve MQTT 5 için CONNECT özelliklerini bulursunuz: session expiry interval, receive maximum, maximum packet size, topic alias maximum ve user properties. Last Will bölümü will topic'ini, payload'ı, QoS'u, retain bayrağını ve will delay interval'ı ayarlar — Last Will teslimatını test etmek için kullanışlıdır.
Bir bağlantı başarısız olursa hata bağlantı log'unda görünür. MQTT 5 broker'ları bir reason code döndürür; ne anlama geldiğini görmek için reason code sorgulama aracına yapıştırın.
Subscribe ve publish
New Subscription ile testmqtt/mqttx/# gibi bir topic filtresi ekleyin. Her aboneliğe bir renk atanır ve gelen mesajlar eşleşen aboneliğin rengiyle boyanır — çakışan wildcard'ları görmenin en hızlı yolu budur. Bir filtrenin eşleşip eşleşmediğinden emin değil misiniz? Topic matcher ile deneyin.
Pencerenin altında publish kutusu bulunur: topic, QoS, retain bayrağı ve payload. Payload türü seçicisi (Plaintext, JSON, Base64, Hex ve sürüme göre diğerleri) hem giden mesajı nasıl yazdığınızı hem de gelen payload'ların nasıl çözüldüğünü belirler. JSON modu doğrular ve biçimlendirir; bozuk telemetriyi anında yakalarsınız.
MQTT 5 için publish kutusunun yanındaki properties simgesine tıklayarak şunları ayarlayabilirsiniz:
- Content type ve payload format indicator
- Message expiry interval
- Topic alias
- Request/response için response topic ve correlation data
- Anahtar/değer çiftleri olarak user properties
Alınan mesajlar özelliklerini mesaj balonunda gösterir; böylece broker'ın bunları iletip iletmediğini doğrulayabilirsiniz. Bu da MQTTX'i MQTT 5 özelliklerini test etmek için kullanışlı bir manuel yardımcı yapar.
Script'ler ve zamanlanmış mesajlar
Script özelliği, bir payload'ı publish edilmeden önce veya alındıktan sonra dönüştüren küçük bir JavaScript fonksiyonu yazmanızı sağlar. Klasik örnek bir sensörü simüle eder:
/**
* Her publish'te sıcaklık ve nem değerlerini rastgele değerlerle değiştirir.
* @param value publish kutusuna yazılan payload, örn. {}
*/
function handlePayload(value) {
let data = value;
if (typeof value === 'string') {
data = JSON.parse(value);
}
data.temperature = Math.round(Math.random() * 400) / 10;
data.humidity = Math.floor(Math.random() * 100);
return JSON.stringify(data, null, 2);
}
execute(handlePayload);Script'i kaydedin, bağlantıya uygulayın (gönderilen mesajlar, alınan mesajlar veya her ikisi) ve birkaç saniyede bir publish etmek için Timed Message ile birleştirin. Tam bir istemci yazmadan sahte bir cihazınız olur. Script API'si sürümler arasında değişti; execute tanınmazsa kurulu sürümünüzdeki hazır örneklere bakın.
mqttx CLI
Tekrarlanabilir testlerde MQTTX'in asıl gücü CLI'dadır. Dört alt komut işin çoğunu karşılar: conn, sub, pub ve bench.
mqttx conn -h broker.connectmq.com -p 1883 \
-u "$MQTT_USER" -P "$MQTT_PASS" -i testmqtt-cli-checkmqttx sub -h broker.connectmq.com -p 1883 \
-t 'testmqtt/mqttx/#' -q 1 -vmqttx pub -h broker.connectmq.com -p 1883 \
-t 'testmqtt/mqttx/sensor-1' -q 1 -r \
-m '{"temperature":21.5}'-v her payload'ın yanında topic'i de yazdırır; wildcard kullanırken bu şarttır. İhtiyaç duyacağınız diğer seçenekler:
| Seçenek | Amaç |
|---|---|
-V 3.1.1 | Varsayılan 5.0 yerine MQTT 3.1.1 kullanır |
-l mqtts / -l wss | Protokol: mqtt, mqtts, ws, wss |
--path /mqtt | WebSocket yolu (-l ws veya -l wss ile) |
--ca ca.crt, --cert, --key | Özel CA ve istemci sertifikaları (mTLS) |
--insecure | Sertifika doğrulamasını atlar — yalnızca yerel hata ayıklama için |
-up "source: ci" | Bir MQTT 5 user property ekler |
--will-topic, --will-message | Last Will yapılandırır |
--save / --config | Seçenekleri bir yapılandırma dosyasına kaydeder ve yeniden kullanır |
Aynı publish işlemi güvenli WebSocket üzerinden şöyle görünür; bir tarayıcı uygulaması da bunu kullanır:
mqttx pub -h broker.connectmq.com -p 8084 -l wss --path /mqtt \
-u "$MQTT_USER" -P "$MQTT_PASS" \
-t 'testmqtt/mqttx/ws' -m 'hello over wss'Tam liste için mqttx pub --help çalıştırın; sürümler arasında zaman zaman flag'ler eklenir veya yeniden adlandırılır.
Simüle edilmiş cihazlar
mqttx simulate, hazır senaryolardan veya kendi script dosyanızdan gerçekçi veriler publish eder. Sürümünüzdeki senaryoları mqttx ls --scenarios ile listeleyin ve birini çalıştırın:
mqttx simulate -sc tesla -c 10 \
-h broker.connectmq.com -p 1883 \
-t 'testmqtt/mqttx/sim/%c'%c client ID'ye dönüşür; böylece her simüle cihazın kendi topic'i olur. Akışı izlemek için başka bir terminalde testmqtt/mqttx/sim/# topic'ine subscribe olun.
mqttx bench ile yük testi
mqttx bench, bağlantı, publish ve subscribe benchmark'larını tek bir süreçten çalıştırır:
mqttx bench conn -c 500 -i 10 \
-h broker.connectmq.com -p 1883 -u "$MQTT_USER" -P "$MQTT_PASS"mqttx bench sub -c 50 -t 'testmqtt/bench/%i' -q 1 \
-h broker.connectmq.com -p 1883mqttx bench pub -c 50 -im 100 -t 'testmqtt/bench/%i' -q 1 \
-h broker.connectmq.com -p 1883 -m '{"v":1}'%i istemci indeksidir; yani 7 numaralı publisher 7 numaralı subscriber ile konuşur. Çıktı bağlı istemcileri ve saniyedeki mesaj hızını gösterir; terminal 1'deki alınan mesaj hızı terminal 2'deki gönderim hızının altında kalıyorsa, istemcilerle broker arasında bir şey doymuş demektir. Bu sayıları nasıl okuyacağınızı ve daha güçlü araçları MQTT broker yük testi yazısında bulabilirsiniz.
Masaüstü mü, CLI mı?
- Masaüstü, keşif yaparken: payload formatlarını karşılaştırmak, birden çok aboneliği izlemek, MQTT 5 özelliklerini elle denemek.
- CLI, tekrar ederken: shell script'leri, CI pipeline'ları, SSH ile eriştiğiniz sunucular ve bir hata raporuna yapıştırmak istediğiniz her şey.
- Hiçbiri, assertion gerektiğinde. MQTTX mesajları gösterir ama bir build'i başarısız kılmaz. Otomatik kontroller için
mqttx'i çıktıyı denetleyen bir script ile sarın veya bir istemci kütüphanesiyle test yazın — bkz. GitHub Actions'ta MQTT testleri.
MQTTX'i MQTT Explorer, HiveMQ CLI ve diğer araçlarla karşılaştırmak isterseniz masaüstü MQTT istemcileri karşılaştırması yazısına bakın.
MQTTX mesajlarınızı tarayıcıda izleyin
MQTTX, arayüzde tıklamaktan script'li benchmark'lara kadar tüm döngüyü tek bir araç ve tek bir bağlantı ayarı setiyle kapsar. Her ortam için bir bağlantı kaydedin, CLI komutlarınızı firmware'inizin yanında repository'de tutun; herhangi bir broker sorununu bir dakikada yeniden üretebilirsiniz.
Sıkça sorulan sorular
MQTTX ücretsiz mi?
Evet. MQTTX, EMQ tarafından geliştirilen açık kaynaklı (Apache 2.0) bir MQTT istemcisidir. Masaüstü uygulaması, mqttx CLI ve web sürümü yalnızca EMQX ile değil, standarda uyan her broker ile ücretsiz kullanılabilir.
MQTTX CLI varsayılan olarak MQTT 5 mi kullanır?
Evet, mqttx'in güncel sürümleri varsayılan olarak MQTT 5 ile bağlanır. Eski bir broker'ı test etmeniz ya da eski cihazların nasıl bağlandığını yeniden üretmeniz gerektiğinde -V 3.1.1 (veya -V 3.1) parametresini verin.
mqttx bench özel bir yük testi aracının yerini tutar mı?
Tek bir makineden hızlı bağlantı, publish ve subscribe benchmark'ları için evet. Çok yüksek bağlantı sayıları, dağıtık yük üretimi veya ayrıntılı gecikme yüzdelikleri için emqtt-bench gibi özel bir araç ya da kendi script'iniz daha uygundur.


