Rehberler

MQTT Broker Nasıl Test Edilir? (Online, CLI ve Kod)

MQTT broker’ını nasıl test edeceğinizi öğrenin: bağlantıyı kontrol edin, publish/subscribe yapın, QoS ve retained mesajları doğrulayın, hataları ayıklayın.

Güncellendi · 7 dk okuma

Bir MQTT broker’ını test etmek tek bir soruya indirgenebilir: bir client bağlanabiliyor, mesaj yayınlayabiliyor ve bu mesajı geri alabiliyor mu? Geri kalan her şey — QoS, retained mesajlar, kimlik doğrulama, gecikme — bu döngünün üzerine kurulur. Bu rehber döngüyü üç farklı yoldan ele alıyor: tarayıcıda, komut satırında ve kodda.

Bir broker’ı test ederken neleri kontrol etmelisiniz

  1. Erişilebilirlik — host adı çözümleniyor ve port açık (TCP 1883, TLS 8883 ya da bir WebSocket port’u). Ayrıntılar için MQTT port’ları rehberine bakın.
  2. El sıkışma — broker CONNECT paketine başarılı bir CONNACK ile yanıt veriyor. Hatalı kimlik bilgileri veya client ID’ler bu aşamada başarısız olur.
  3. Gidiş-dönüş — bir topic’e yayınlanan mesaj, aynı topic’e abone olan bir subscriber’a ulaşıyor.
  4. İhtiyaç duyduğunuz özellikler — QoS 1/2 onayları, retained mesajlar, Last Will, MQTT 5 property’leri.
  5. Gecikme ve kararlılık — gidiş-dönüşün ne kadar sürdüğü ve bağlantının keep-alive aralıkları boyunca ayakta kalıp kalmadığı.

1. MQTT broker’ını online test edin

En hızlı yol tarayıcı tabanlı bir client kullanmaktır. Tarayıcılar MQTT’yi yalnızca WebSocket üzerinden konuşabilir; bu nedenle broker’ın wss:// uç noktasına ihtiyacınız var — public broker listemizdeki her broker bu adresi gösterir.

  1. Online MQTT client’ı açın ve bir broker seçin.
  2. Connect’e tıklayın. Yeşil durum göstergesi CONNACK’in geldiği anlamına gelir.
  3. testmqtt/demo-42/# gibi benzersiz bir topic’e abone olun.
  4. {"hello":"world"} mesajını testmqtt/demo-42/hello topic’ine yayınlayın ve mesaj listesinde belirdiğini izleyin.

Online MQTT istemcisinde deneyin

2. Komut satırından test edin

Mosquitto client’ları standart CLI araçlarıdır. İki terminal açın — biri subscriber, diğeri publisher olsun:

Terminal 1 — abone olma
mosquitto_sub -h broker.hivemq.com -p 1883 -t 'testmqtt/demo-42/#' -v
Terminal 2 — yayınlama
mosquitto_pub -h broker.hivemq.com -p 1883 -t 'testmqtt/demo-42/hello' -m 'hello from the CLI'

Kullanıcı adı ve parola için -u ve -P, QoS 1’i test etmek için -q 1, TLS’i test etmek için ise 8883 port’uyla birlikte --cafile ekleyin.

3. Kodda test edin

Küçük bir script, en tekrarlanabilir testtir — CI’da ya da bir health check olarak çalıştırabilirsiniz. İşte MQTT.js ile gecikmeyi de ölçen bir gidiş-dönüş testi:

roundtrip.mjs
import mqtt from 'mqtt';

const topic = `testmqtt/${Math.random().toString(16).slice(2, 8)}/ping`;
const client = mqtt.connect('wss://broker.hivemq.com:8884/mqtt');

client.on('connect', () => {
  client.subscribe(topic, { qos: 1 }, () => {
    const sentAt = Date.now();
    client.publish(topic, String(sentAt), { qos: 1 });
  });
});

client.on('message', (_topic, payload) => {
  console.log(`round trip: ${Date.now() - Number(payload)} ms`);
  client.end();
});

client.on('error', (err) => {
  console.error('connection failed:', err.message);
  process.exit(1);
});

QoS, retained mesajlar ve Last Will’i test etmek

  • QoS — QoS 1 ve 2 ile yayınlayın ve publish callback’inin tetiklendiğini doğrulayın. MQTT QoS seviyeleri yazısına bakın.
  • Retained mesajlar — retain ile yayınlayın, bağlantıyı kesin, yeniden bağlanıp abone olun: son değer anında gelmelidir. Retained mesajlar yazısına bakın.
  • Last Will — bir client’ı will mesajıyla bağlayın, temiz bir disconnect yapmadan sonlandırın ve subscriber’ların will mesajını aldığını kontrol edin. Last Will and Testament yazısına bakın.

Test başarısız olursa

Zaman aşımları genellikle engellenmiş bir port’a ya da yanlış transport’a (tarayıcıdan TCP port’u kullanmak) işaret eder. Anında gelen retler ise kimlik bilgilerine, client ID çakışmalarına veya ACL’lere işaret eder. MQTT bağlantı hataları rehberimiz her CONNACK reason code’unu bir çözümle eşleştirir.

Sıkça sorulan sorular

Hiçbir şey kurmadan bir MQTT broker’ını nasıl test edebilirim?

TestMQTT gibi online bir MQTT client açın, broker’ı seçin, güvenli WebSocket (wss) üzerinden bağlanın ve bir test topic’ine abone olun. Aynı topic’e bir mesaj yayınlayın ve mesajın geldiğini doğrulayın.

Tarayıcı neden 1883 port’una bağlanamıyor?

Tarayıcılar ham TCP soketi açamaz. Web tabanlı MQTT client’ları, TCP port’u 1883 veya TLS port’u 8883 yerine broker’ın WebSocket listener’ını (genellikle 8083/8084, 8000/8884 veya 443) kullanmak zorundadır.

İlk test için iyi bir topic hangisidir?

Başka kimsenin kullanmayacağı benzersiz bir topic seçin, örneğin testmqtt/<random-id>/hello. Public broker’larda # topic’ine abone olmaktan kaçının; aksi halde diğer tüm kullanıcıların trafiğini alırsınız.