MQTT
Ein kompaktes Publish-Subscribe-Protokoll, das für intermittierende Netzwerke, eingeschränkte Geräte, hierarchische Topics und Broker-Push-Zustellung entwickelt wurde.
Am besten geeignet für Device-to-Cloud- und Command-and-Control-Messaging.
Protokollvergleich
Verwenden Sie MQTT allein für Live-Geräteverbindungen und Befehle, wenn kein wiederholbares Backend-Log benötigt wird. Nutzen Sie Kafka allein für vertrauenswürdige Backend-Producer und persistente Ereignisverarbeitung. Kombinieren Sie beide, wenn eingeschränkte Geräte MQTT-Sessions am Edge benötigen und mehrere Backend-Consumer gespeicherte, wiederholbare Ereignisse hinter einer kontrollierten Bridge verarbeiten sollen.
Die Protokolle lösen unterschiedliche Grenzen. MQTT optimiert die Geräteverbindung; Kafka optimiert das dauerhafte Verarbeitungsrückgrat.
MQTT
Ein kompaktes Publish-Subscribe-Protokoll, das für intermittierende Netzwerke, eingeschränkte Geräte, hierarchische Topics und Broker-Push-Zustellung entwickelt wurde.
Am besten geeignet für Device-to-Cloud- und Command-and-Control-Messaging.
Apache Kafka
Ein verteiltes Ereignisprotokoll für persistente Aufbewahrung, partitionierten Durchsatz, Consumer-gesteuerte Offsets, Replay und Stream-Verarbeitung.
Am besten für Service-zu-Service-Ereignispipelines, Analysen und Wiedergabe geeignet.
| Fähigkeit | MQTT | Kafka |
|---|---|---|
| Lebenszyklus der Geräteverbindung | Passend für native Anwendungen: schlanke Clients, Keepalive, Sitzungen, Reconnect und Last Will | Backend-Clients setzen eine stabile Konnektivität und Kafka-Protokollunterstützung voraus |
| Kernmodell | Vermitteltes Publish-Subscribe mit hierarchischen Topics | Partitioniertes Nur-Anhang-Protokoll mit Consumer-Offsets |
| Typische Clients | Sensoren, eingebettete Geräte, Gateways, mobile Clients | Backend-Dienste, Konnektoren, Stream-Prozessoren |
| Lieferung | Der Broker stellt passende Nachrichten zu; QoS 0, 1 oder 2 | Consumer lesen Datensätze und bestätigen Offsets pro Consumer Group |
| Command-Downlink | Vom Broker gesendete Befehls-Topics mit gerätespezifischer Autorisierung, Ablauf und Bestätigungen | Erfordert ein Anwendungsgateway, um Ereignisse zu autorisieren und in Gerätebefehle zu übersetzen |
| Aufbewahrung und Wiedergabe | Retained Messages und Session-Queues; kein allgemeines Ereignisarchiv | Persistente zeit- oder größenbasierte Aufbewahrung mit Wiedergabe ab einem Offset |
| Reihenfolge und Partitionierung | Die Reihenfolge gilt nur innerhalb einer Client-Verbindung und Topic-Zustellung; kein Consumer-Partitionsmodell | Ein Datensatzschlüssel wählt eine Partition aus; Die Ordnung ist nur innerhalb dieser Partition gewährleistet |
| Unabhängige Consumer | Subscriptions verteilen Live-Nachrichten per Fan-out; Shared Subscriptions teilen die Arbeit ohne persistente Offsets | Consumer Groups verwalten unabhängige Offsets und skalieren die Verarbeitung über Partitionen hinweg |
| Routenführung | Hierarchische Topic-Filter mit +- und #-Platzhaltern | Flache Topics und Partitionen; Routing gehört in Produzenten oder Prozessoren |
| Netzwerkannahmen | Entwickelt für geringe Bandbreite, hohe Latenz und die erneute Verbindung von Clients | Entwickelt für stabile Konnektivität zu Rechenzentren oder Cloud-Diensten |
Ein einziges System kann beide nutzen, ohne ihre Verantwortlichkeiten zu duplizieren.
Sorgen Sie dafür, dass die Verantwortlichkeiten im Protokoll explizit bleiben, damit Wiedergabe, Gegendruck und Autorisierung verständlich bleiben.
Einzigartige Identität; versionierte Telemetrie
TLS, Sitzungen, Topic ACLs, Befehlsübermittlung
Schema, Envelope, Wiederholungen, DLQ
Partitionierte Aufbewahrung und Wiedergabe
Unabhängige Bearbeitung und Offsets
Das Repository-Beispiel startet Mosquitto und Redpanda in reinen Loopback-Containern, validiert ein synthetisches Telemetrieschema, partitioniert Kafka-Datensätze nach Geräte-ID, begrenzt Wiederholungsversuche und leitet ungültige Datensätze an eine DLQ weiter. Es ist ein Lernbeispiel, kein Produktions-Connector: Der anonyme lokale Broker kennt keine Geräteidentitäten, und die Bridge hat zwischen MQTT- und Kafka-Bestätigung keinen persistenten Puffer.
docker compose -f public/examples/mqtt-kafka-bridge/compose.yaml up -d
pnpm mqtt:kafka-bridge
# In a second shell, publish a synthetic event
docker compose -f public/examples/mqtt-kafka-bridge/compose.yaml exec mosquitto \
mosquitto_pub -h 127.0.0.1 -t lab/device-042/telemetry -q 1 \
-m '{"eventId":"evt-001","recordedAt":"2026-01-01T00:00:00Z","value":21.4}'Kafka ist kein Drop-in-Gerätebroker. Es stellt keine MQTT-Sitzungen, QoS-Flows, aufbewahrte Nachrichten, hierarchische Topic-Filter oder denselben eingeschränkten Client-Footprint bereit.
MQTT kann Session-Nachrichten puffern und den letzten Wert eines Topics beibehalten. Es ist jedoch kein langlebiges, wiederholbares Ereignisprotokoll für viele unabhängige Backend-Consumer.
Führen Sie es an einer kontrollierten Aufnahmegrenze aus, an der Anmeldeinformationen, Schemata, Wiederholungsverhalten, Partitionsschlüssel und die Behandlung unzustellbarer Nachrichten verwaltet und beobachtet werden können.
Fahren Sie von den Architekturgrenzen zur MQTT-Implementierung, Sicherheit, Betriebsmodell, Flottenskalierung und Planauswahl fort.
Verstehen Sie den Browsertransport, MQTT Verantwortungsgrenzen und das Wiederverbindungsverhalten.
Verfolgen Sie eine Nachricht von der Clientverbindung über die Topic-Zustellung.
Schützen Sie Geräteidentität, Transport und Topic-Berechtigungen.
Weisen Sie den Besitz für Broker-Upgrades, Verfügbarkeit und Sicherheitsvorgänge zu.
Planen Sie Kapazität für Verbindungen, Subscriptions, Reconnects und Regionen, bevor Sie nachgelagerte Pipelines hinzufügen.
Vergleichen Sie Managed-MQTT-Broker-Tarife für die Geräteverbindungsebene.