Broker testleri

Test İçin Ücretsiz MQTT Broker'lar: Hangisini Kullanmalı?

Testte hangi ücretsiz MQTT broker kullanılmalı? Paylaşımlı endpoint, public sandbox, ücretsiz planlar ve yerel Docker broker'ları komutlarla karşılaştırıldı.

Güncellendi · 8 dk okuma

Test İçin Ücretsiz MQTT Broker'lar: Hangisini Kullanmalı?

Doğru test için ücretsiz MQTT broker neyi test ettiğinize bağlıdır. İlk "kodum bağlanıyor mu?" kontrolü için broker.connectmq.com gibi paylaşımlı bir endpoint veya public bir sandbox, kayıt gerektirmeden saniyeler içinde çalışır. Otomatik testler için broker'ı yerelde veya CI'da çalıştırın. Kimlik bilgileri, ACL'ler veya gerçekçi yük işin içine girdiğinde özel bir broker kullanın — ücretsiz planlar mevcuttur, sonraki adım ise özel bir yönetilen instance'tır.

Bu rehber seçenekleri türlerine göre gruplar, her birinin neye iyi gelip neye gelmediğini anlatır ve her biri için bir dakikalık bir kontrol sunar.

Dört tür ücretsiz test broker'ı

TürÖrneklerKayıtİzolasyonEn uygun kullanım
Yönetilen bir servisin paylaşımlı endpoint'ibroker.connectmq.comHayırPaylaşımlıHızlı bağlantı ve kod kontrolleri
Topluluk public sandbox'ıtest.mosquitto.org, broker.hivemq.com, broker.emqx.ioHayırPaylaşımlı, anonimDemolar, eğitimler, protokol denemeleri
Yönetilen servisin ücretsiz planıHiveMQ Cloud, EMQX Serverless ve diğerleriEvetÖzelDüşük trafikle auth, TLS ve ACL testleri
Yerel / self-hostedDocker'da Mosquitto, EMQX, NanoMQHayırTamamen sizinUnit, entegrasyon ve CI testleri

Hiçbiri "en iyisi" değildir. Tipik bir proje iki ya da üçünü kullanır: ilk satırları yazarken paylaşımlı bir endpoint, CI'da yerel bir broker ve canlıya çıkmadan önce özel bir broker.

1. Paylaşımlı endpoint'ler ve public sandbox'lar

Bunlar için bir hostname'den başka bir şey gerekmez. "İstemci kodum doğru mu?" sorusunu yanıtlamanın en hızlı yoludur.

ConnectMQ paylaşımlı endpoint'i

broker.connectmq.com, yönetilen bir MQTT broker olan ConnectMQ'nun hızlı testler için sunduğu paylaşımlı endpoint'tir. Bilinen portlarda MQTT 3.1.1 ve MQTT 5 konuşur:

TaşımaPortURL
TCP1883mqtt://broker.connectmq.com:1883
TLS8883mqtts://broker.connectmq.com:8883
WebSocket8083ws://broker.connectmq.com:8083/mqtt
Güvenli WebSocket8084wss://broker.connectmq.com:8084/mqtt

Özel instance'ları çalıştıran servisle aynı olduğu için burada test ettiğiniz kod — TLS ve WebSocket ayarları dahil — daha sonra yalnızca hostname ve kimlik bilgilerini değiştirerek kendi broker'ınıza yönlendireceğiniz kodun ta kendisidir.

Topluluk public broker'ları

  • test.mosquitto.org — Eclipse Mosquitto projesi tarafından işletilir. Şifresiz, TLS ve WebSocket portlarının yanı sıra istemci sertifikası ve kimlik doğrulama testleri için portlar sunar; sitede hepsi listelenir. Açıkça bir test sunucusudur, yavaş olabilir veya yeniden başlatılabilir.
  • broker.hivemq.com — HiveMQ'nun public broker'ı; 1883'te TCP ve WebSocket desteği vardır. Tarayıcı demoları için kullanışlıdır.
  • broker.emqx.io — EMQX'in public broker'ı; TCP, TLS, WebSocket ve güvenli WebSocket portları vardır.

Hepsi paylaşımlı ve anonimdir: topic'inizi tahmin eden veya wildcard ile abone olan herkes yayınladıklarınızı okuyabilir. Erişilebilirlik ve limitler işletmecilerin elindedir ve haber verilmeden değişebilir. Yan yana nasıl davrandıklarını görmek için public MQTT broker karşılaştırması yazısına bakın.

Bir dakikalık kontrol

Terminal 1 — abone ol
mosquitto_sub -h broker.connectmq.com -p 1883 -t 'testmqtt/free-test/#' -v
Terminal 2 — publish et
mosquitto_pub -h broker.connectmq.com -p 1883 -t 'testmqtt/free-test/hello' -m 'it works'

Subscriber testmqtt/free-test/hello it works yazdırıyorsa ağ yolunuz, portunuz ve istemci araçlarınız sorunsuzdur. Başka bir public broker'ı denemek için hostname'i değiştirin. Elinizde terminal yok mu? Online MQTT istemcisini kullanın — doğrudan tarayıcıdan güvenli WebSocket ile bağlanır.

Ücretsiz bir broker'ı tarayıcınızda test edin

2. Yönetilen servislerin ücretsiz planları

Birçok yönetilen MQTT servisi ücretsiz bir plan veya ücretsiz kota sunar: kayıt olursunuz ve kendi kimlik bilgileriniz ve TLS ile özel bir broker alırsınız. HiveMQ Cloud ve EMQX Serverless bilinen örneklerdir; başkaları da vardır ve ayrıntılar (bağlantı sınırları, mesaj kotaları, kart istenip istenmediği) sağlayıcıya göre değişir ve zamanla güncellenir; bu yüzden güncel koşulları sağlayıcının sitesinden okuyun.

Ücretsiz planlar şunlar için iyidir:

Yük testleri (kotalar hızla tükenir) ve garanti gerektiren her şey için daha az uygundurlar. Prototip ürüne dönüştüğünde olağan sonraki adım, aynı serviste ücretli bir plan veya özel bir instance'tır; böylece istemci yapılandırması aynı kalır.

3. Docker'da veya CI'da yerel broker'lar

Otomatik testler için kendi başlattığınız bir broker, barındırılan her seçenekten iyidir: izoledir, kotası yoktur, çevrimdışı çalışır ve test bitince kaldırılır.

Yerel test için Mosquitto 2
cat > mosquitto.conf <<'EOF'
listener 1883
allow_anonymous true
EOF
docker run --rm -p 1883:1883 -v "$PWD/mosquitto.conf:/mosquitto/config/mosquitto.conf" eclipse-mosquitto:2

Mosquitto 2, bir listener yapılandırmadığınız sürece yalnızca localhost'u dinler ve anonim istemcileri reddeder; bu iki satırlık yapılandırma bu yüzden gereklidir. Daha kapsamlısını mosquitto.conf oluşturucu ile üretin ya da broker'ı test kodunuzdan Testcontainers ile başlatın.

Yerel broker'ların bir kör noktası vardır: gerçek bir internet yolunda olanları göstermezler — NAT zaman aşımları, cihazdan TLS, kurumsal ağdaki proxy'ler. Bunları uzak bir broker'a karşı en az bir testle birlikte kullanın.

Hangisini kullanmalısınız?

Amacınız…Kullanın
Yeni bir istemci kütüphanesinin bağlanıp publish ettiğini kontrol etmekPaylaşımlı endpoint veya public sandbox
WebSocket üzerinden tarayıcı demosu göstermekwss portu olan paylaşımlı endpoint veya public sandbox
CI'da unit ve entegrasyon testleri çalıştırmakDocker / Testcontainers ile yerel broker
Login, ACL ve TLS sertifikalarını test etmekÜcretsiz veya özel yönetilen broker ya da auth dosyalı yerel Mosquitto
Yük veya soak testiKontrolünüzdeki özel bir broker — asla public değil
Sahadaki gerçek bir cihazdan test etmekCihazın ağından erişilebilen uzak bir broker

Asıl soru "public mi, özel mi?" ise public ve özel MQTT broker'lar yazısı konuyu derinleştiriyor; broker dizini de barındırılan ve self-hosted seçenekleri protokolleri ve portlarıyla listeliyor.

Kaçınılması gereken hatalar

  • Genel topic'ler. Public bir broker'da test/topic size yabancıların mesajlarını gösterir ve testinizi karıştırır. Her zaman benzersiz bir önek kullanın.
  • Sabit client ID'ler. İki geliştirici aynı örneği client_id="test" ile çalıştırırsa, biri bağlandığında broker diğerini düşürür. Client ID oluşturucuyu kullanın veya rastgele bir sonek ekleyin.
  • Retained duruma güvenmek. Paylaşımlı broker'larda diğer kullanıcılar retained mesajları ezebilir veya silebilir. Test çalıştırmaları arasında bunlara güvenmeyin.
  • Sandbox'ta benchmark yapmak. Sonuçlar herkesin trafiğini yansıtır; ağır testler hız sınırlamasına veya engellenmeye yol açabilir.
  • Test host'uyla production'a çıkmak. Broker URL'sini koda değil yapılandırmaya koyun; böylece test broker'ından production'a geçiş yalnızca bir yapılandırma değişikliği olur.

Ücretsiz broker'lar MQTT geliştirmenin ilk saatini sürtünmesiz hale getirir. Kodunuzun çalıştığını kanıtlamak için paylaşımlı bir endpoint veya public sandbox, testleri hızlı ve güvenilir tutmak için yerel bir broker, kimlik bilgileri, izinler veya gerçek trafik devreye girer girmez de özel bir broker kullanın.

Sıkça sorulan sorular

Test için public bir MQTT broker kullanmak güvenli mi?

Atılabilir test verileri için evet. Public bir broker'da genellikle herkes '#' dahil her topic'e abone olabilir; bu yüzden asla kimlik bilgisi, kişisel veri veya gerçek donanımı kontrol eden bir şey göndermeyin. Diğer kullanıcılarla çakışmamak için benzersiz topic adları kullanın.

CI pipeline'ları için en iyi ücretsiz MQTT broker hangisi?

Pipeline'ın içinde başlatılan bir broker; örneğin Docker service container olarak veya Testcontainers ile çalışan Mosquitto. İzoledir, saniyeler içinde başlar, hız limiti yoktur ve üçüncü taraf bir servisin ayakta olmasına bağlı değildir.

Public bir broker'da kimlik doğrulama ve ACL test edebilir miyim?

Genellikle anlamlı bir şekilde edemezsiniz. Public sandbox'lar çoğunlukla anonimdir; kullanıcı veya topic bazlı izin tanımlamanıza izin vermez. Özel bir broker kullanın: ücretsiz bir yönetilen plan, özel yönetilen bir broker veya parola ve ACL dosyası olan yerel bir Mosquitto.