Ücretsiz bir public MQTT broker, MQTT'yi denemenin en hızlı yoludur: hesap yok, kurulum yok; yalnızca bir hostname ve bir port. Bu eğitimde broker.connectmq.com'a bağlanacak, anonim public alanının kurallarını ve limitlerini öğrenecek, Mosquitto CLI, Python, Node.js ve tarayıcı ile çalışan örnekler çalıştıracaksınız. Sonunda özel bir broker'a geçme zamanının tam olarak ne zaman geldiğini bileceksiniz.
Protokole yeniyseniz önce MQTT Broker Nedir? yazısıyla başlayın, uygulamalı kısım için buraya dönün.
Ücretsiz Public MQTT Broker Nedir?
Public MQTT broker, internetteki herkesin kimlik bilgisi olmadan bağlanabildiği bir broker'dır. Öğrenme, demolar, hızlı prototipler ve client kodunun hata ayıklaması için tasarlanmıştır. MQTT 3.1.1 ve MQTT 5.0 konuşan gerçek bir broker elde edersiniz; ancak onu aynı anda test yapan herkesle paylaşırsınız.
Bu paylaşımın önemli bir sonucu vardır: Public alanda yayınladığınız her şeyi herkes okuyabilir. Onu herkese açık bir yazı tahtası gibi düşünün. "Hello world", sensör simülasyonları ve protokol denemeleri için mükemmeldir; parolalar, kişisel veriler veya üretim trafiği için ise tamamen yanlış bir yerdir.
broker.connectmq.com Bağlantı Bilgileri
ConnectMQ public broker'ı dört uç noktada dinler. Client'ınıza ve ağınıza uyanı seçin.
| Protokol | Port | URL | Tipik kullanım |
|---|---|---|---|
| MQTT (TCP) | 1883 | mqtt://broker.connectmq.com:1883 | CLI araçları, mikrodenetleyiciler, hızlı testler |
| TLS üzerinden MQTT | 8883 | mqtts://broker.connectmq.com:8883 | Sunuculardan ve cihazlardan şifreli bağlantılar |
| WebSocket | 8083 | ws://broker.connectmq.com:8083/mqtt | Yerel web denemeleri |
| Güvenli WebSocket | 8084 | wss://broker.connectmq.com:8084/mqtt | Tarayıcılar ve HTTPS sayfaları |
8883 ve 8084 portları Let's Encrypt sertifikası kullanır; bu nedenle standart işletim sistemi CA paketleri onu ek dosya gerektirmeden doğrular. Ağınız alışılmadık portları engelliyorsa, 8084 üzerindeki WSS çoğu zaman en kolay yoldur, çünkü çoğu proxy'ye sıradan HTTPS benzeri trafik gibi görünür.
Anonim Erişim Kuralları
Kullanıcı adı veya parolaya ihtiyacınız yok. Üç basit kural geçerlidir:
- Boş olmayan bir client ID kullanın. Kullanıcı adı ve parola olmadan, ancak
demo-7f3a91gibi bir client ID ile bağlanın. Boş client ID reddedilir. Benzersiz olmasına dikkat edin: MQTT spesifikasyonuna göre aynı ID ile kurulan ikinci bağlantı oturumu devralır ve ilk client'ın bağlantısı kesilir. - Benzersiz bir topic öneki kullanın. Her şeyi kimsenin tahmin edemeyeceği bir önek altına koyun; örneğin
connectmq/demo/<your-random-id>/.... Bu, diğer test edenlerle çakışmaları önler ve topic ağacınızı düzenli tutar. - Her şeyin herkese açık olduğunu varsayın. Anonim client'lar paylaşımlı bir public alana düşer. Public client'lar yalnızca diğer public client'ların topic'lerini görür (ücretli kiracılardan izoledirler), ancak public alanın içinde herhangi bir client
#'e abone olup mesajlarınızı okuyabilir.
Kullanışlı bir yöntem, bir kez rastgele bir ID üretip bunu hem client ID tabanı hem de topic öneki olarak yeniden kullanmaktır:
export ID=demo-$(openssl rand -hex 3)
echo $ID # örn. demo-7f3a91
Public Alan Limitleri
Public alan test için cömerttir, ancak herkes için sağlıklı kalması adına bilinçli olarak sınırlandırılmıştır.
| Limit | Değer |
|---|---|
| Maksimum mesaj boyutu | 64 KB |
| Yayın hızı | Client başına saniyede 10 mesaj |
| Abonelikler | Client başına 10 |
| Topic derinliği | En fazla 8 seviye |
| QoS seviyeleri | 0, 1 ve 2 |
| Retained message'lar | Destekleniyor |
Wildcard abonelikler (+, #) |
Destekleniyor |
Shared subscription'lar ($share/{group}/{filter}) |
Destekleniyor |
| Session expiry | En fazla 30 dakika |
Bir kotayı aşarsanız MQTT 5 client'ları sessiz bir hata yerine 0x97 (Quota exceeded) gibi bir reason code alır; bu da hata ayıklamayı çok kolaylaştırır. Hangi QoS'u seçeceğinizden emin değil misiniz? MQTT QoS Seviyeleri yazısına bakın.
Mosquitto CLI ile Ücretsiz Public MQTT Broker'ı Deneyin
Eclipse Mosquitto komut satırı araçları, mesajların akışını görmenin en hızlı yoludur. İki terminal açın.
Terminal 1 — önekinize abone olun:
mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-sub -t "connectmq/demo/$ID/#" -v
Terminal 2 — bir mesaj yayınlayın:
mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/temperature" -m '{"value": 22.5, "unit": "C"}'
Terminal 1, topic'i ve ardından payload'ı yazdırır. Şifreli portu kullanmak için sisteminizin CA paketini ekleyin (yol, çoğu Linux dağıtımı için gösterilmiştir):
mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs -i $ID-tls -t "connectmq/demo/$ID/tls" -m "hello over TLS" -V mqttv5
Windows veya macOS'ta bunun yerine --cafile ile bir PEM CA paketini gösterin (örneğin Git for Windows ile gelen paket). -V mqttv5 bayrağı client'ı MQTT 5.0'a geçirir.
Retained Message Demosu
Retained message broker tarafından saklanır ve o topic'in her yeni subscriber'ına anında iletilir. Cihaz durumu gibi "bilinen son durum" değerleri için idealdir.
# Retained bir durum yayınlayın
mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/status" -m "online" -r -q 1
# Yepyeni bir subscriber, mesaj daha önce yayınlanmış olsa bile onu anında alır
mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-late -t "connectmq/demo/$ID/status" -v -C 1 -W 5
# Boş bir retained payload yayınlayarak retained mesajı temizleyin
mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/status" -n -r
İşiniz bittiğinde retained test mesajlarını her zaman temizleyin; bu, public alanı temiz tutar.
Last Will and Testament Demosu
Last Will, client'ınızın bağlantısı beklenmedik şekilde koptuğunda broker'ın sizin adınıza yayınladığı mesajdır. Terminal 1'deki subscriber'ı çalışır halde bırakın, ardından will içeren bir "cihaz" başlatın:
mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-device -t "connectmq/demo/$ID/cmd" -k 5 --will-topic "connectmq/demo/$ID/status" --will-payload "offline" --will-qos 1
Şimdi bu terminali veya süreci sonlandırın (pencereyi kapatmak işe yarar; temiz bir Ctrl+C bağlantı kesişi her client'ta will'i tetiklemeyebilir). Birkaç saniye içinde, keep-alive süresi dolduktan sonra, Terminal 1 şunu gösterir:
connectmq/demo/demo-7f3a91/status offline
Bu komutları rehberi yazarken broker.connectmq.com üzerinde doğruladık.
Python Örneği (paho-mqtt 2.x)
Client'ı pip install "paho-mqtt>=2.0" ile kurun. Aşağıdaki betik TLS üzerinden bağlanır, önekine abone olur ve bir ölçüm yayınlar.
import json
import ssl
import uuid
import paho.mqtt.client as mqtt
DEVICE_ID = f"demo-{uuid.uuid4().hex[:6]}"
PREFIX = f"connectmq/demo/{DEVICE_ID}"
def on_connect(client, userdata, flags, reason_code, properties):
print(f"Connected: {reason_code}")
client.subscribe(f"{PREFIX}/#", qos=1)
client.publish(f"{PREFIX}/temperature", json.dumps({"value": 21.8}), qos=1)
def on_message(client, userdata, msg):
print(f"{msg.topic} -> {msg.payload.decode()}")
client = mqtt.Client(
mqtt.CallbackAPIVersion.VERSION2,
client_id=DEVICE_ID,
protocol=mqtt.MQTTv5,
)
client.tls_set(cert_reqs=ssl.CERT_REQUIRED) # sistem CA deposunu kullanır
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 8883, keepalive=30)
client.loop_forever()
Public alanda username_pw_set() çağrısına gerek olmadığına dikkat edin. Düz TCP için tls_set() satırını kaldırın ve 1883 portunu kullanın.
Node.js Örneği (mqtts ve wss üzerinden MQTT.js)
MQTT.js v5'i npm install mqtt ile kurun. Aynı kod TLS veya Güvenli WebSocket üzerinden çalışır; yalnızca URL değişir.
import mqtt from "mqtt";
import { randomBytes } from "node:crypto";
const clientId = `demo-${randomBytes(3).toString("hex")}`;
const prefix = `connectmq/demo/${clientId}`;
// Seçenek A: TLS üzerinden MQTT
const url = "mqtts://broker.connectmq.com:8883";
// Seçenek B: Güvenli WebSocket üzerinden MQTT
// const url = "wss://broker.connectmq.com:8084/mqtt";
const client = mqtt.connect(url, { clientId, protocolVersion: 5 });
client.on("connect", () => {
console.log("Connected as", clientId);
client.subscribe(`${prefix}/#`, { qos: 1 });
client.publish(`${prefix}/humidity`, JSON.stringify({ value: 48 }), { qos: 1 });
});
client.on("message", (topic, payload) => {
console.log(topic, payload.toString());
});
client.on("error", (err) => console.error(err.message));
WSS Üzerinden Tarayıcı Örneği
Tarayıcılar ham TCP soketleri açamaz, bu yüzden WebSocket üzerinden MQTT kullanırlar. HTTPS üzerinden sunulan sayfalar 8084 portunda wss:// kullanmak zorundadır. Aşağıdaki kodu sevdiğiniz araçla (Vite, webpack, esbuild) paketleyin:
import mqtt from "mqtt";
const clientId = "web-" + Math.random().toString(16).slice(2, 8);
const prefix = `connectmq/demo/${clientId}`;
const client = mqtt.connect("wss://broker.connectmq.com:8084/mqtt", {
clientId,
protocolVersion: 5,
});
client.on("connect", () => {
client.subscribe(`${prefix}/#`);
client.publish(`${prefix}/hello`, "Hello from the browser");
});
client.on("message", (topic, payload) => {
const line = document.createElement("div");
line.textContent = `${topic}: ${payload.toString()}`;
document.body.appendChild(line);
});
Yollara, portlara ve proxy'lere daha ayrıntılı bakmak için WebSocket üzerinden MQTT yazısını okuyun.
Ücretsiz Public MQTT Broker ve Özel Broker Karşılaştırması
Public broker bir deneme alanıdır (sandbox). Aşağıdakilerden herhangi biri geçerli olduğu anda özel bir broker'a geçin:
| İhtiyacınız... | Public broker | app.connectmq.com üzerinde özel broker |
|---|---|---|
| Gizlilik | Public alandaki herkes topic'lerinizi okuyabilir | Kiracı topic'leri diğer kiracılardan ve public alandan izoledir |
| Kimlik doğrulama | Anonim, yalnızca client ID | Her broker için verilen kullanıcı adı, parola ve client ID |
| Mesaj boyutu | 64 KB | Serverless (Free) planında 256 KB, Serverless (Paid) planında 1 MB |
| Bağlantılar | Test amaçlı | En fazla 25 (Free), en fazla 1.000 (Paid) veya bir Dedicated küme |
| Araçlar | Kendi client'larınız | Tarayıcı içi MQTT client, canlı topic gezgini, dashboard ve alarm kuralları içeren portal |
Public alanı aştığınızı gösteren tipik işaretler: gerçek müşteri veya cihaz verisi gönderiyorsunuz, başkalarının topic adlarınızı görmesini engellemek istiyorsunuz, bir cihaz filosu için kalıcı kimlik bilgilerine ihtiyacınız var ya da verileriniz üzerinde dashboard ve alarm istiyorsunuz. Geçiş büyük ölçüde bir yapılandırma değişikliğidir; aynı kodu koruyun, portaldan aldığınız kullanıcı adı, parola ve client ID'yi ekleyin:
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="YOUR_CLIENT_ID", protocol=mqtt.MQTTv5)
client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD")
client.tls_set()
client.connect("broker.connectmq.com", 8883)
Canlıya geçmeden önce MQTT güvenliği en iyi uygulamaları yazımızı gözden geçirin.
ConnectMQ ile Başlayın
Verilerinizi gizli tutmaya hazır mısınız? app.connectmq.com üzerinde ücretsiz bir hesap oluşturun; Serverless (Free) planı kredi kartı gerektirmez. Bir plan seçin, bir broker oluşturun ve üretilen kullanıcı adını, parolayı ve client ID'yi kopyalayın. İlk özel mesajınız birkaç dakika uzağınızda.
Sık Sorulan Sorular
broker.connectmq.com gerçekten ücretsiz mi?
Evet. broker.connectmq.com'un public alanı test, öğrenme ve demolar için kayıt gerektirmeden ücretsiz kullanılabilir. Mesaj başına 64 KB ve client başına saniyede 10 mesaj gibi adil kullanım limitleri vardır.
Public MQTT broker için kullanıcı adı ve parola gerekiyor mu?
Hayır. Kimlik bilgisi olmadan, boş olmayan ve benzersiz bir client ID ile bağlanın. Boş client ID reddedilir.
Public bir MQTT broker'da başkaları mesajlarımı görebilir mi?
Evet. Public alanda yayınlanan her şey diğer tüm public client'lar tarafından okunabilir; bu nedenle benzersiz bir topic öneki kullanın ve asla kişisel veya hassas veri göndermeyin. Özel veriler için app.connectmq.com üzerinde bir broker oluşturun.
Public broker hangi MQTT sürümlerini ve portları destekliyor?
TCP 1883, TLS 8883, WebSocket 8083 ve Güvenli WebSocket 8084 (yol /mqtt) üzerinde MQTT 3.1.1 ve MQTT 5.0'ı destekler.
Ücretsiz public MQTT broker'ı üretimde kullanabilir miyim?
Üretim için tasarlanmamıştır. Gerçek her kurulum için kimlik bilgileri, kiracı izolasyonu ve daha yüksek limitler sunan özel bir ConnectMQ broker kullanın.



