2017-07-22 4 views
0

Meine Anforderung besteht darin, 2 MQTT-Knoten, die auf verschiedenen VMs ausgeführt werden, zu laden und dann Verbraucher für diese MQTT-Broker auf beiden Knoten. Die Aufgabe der Konsumenten wird es sein, ein Thema zu abonnieren und es nach Erhalt der Daten bei Kafka zu veröffentlichen. Problem Ich sehe, ob das, da beide MQTT-Konsumenten zum selben Thema abonniert sind, dieselbe Nachricht erhalten wird und beide in Kafka einfügen werden, wodurch Duplikate erzeugt werden. Gibt es sowieso, um zu vermeiden, Duplikate in Kafka zu schreiben?MQTT zu Kafka. So vermeiden Sie Duplikate

  • Ich habe Mosquitto und Mosca Broker versucht, aber sie unterstützen Clusterbildung nicht. So erhielten abonnierte Clients keine Nachrichten, wenn sie einen anderen Knoten als den Knoten abonniert hatten, auf dem die Nachricht veröffentlicht wurde. Beide Knoten sind hinter HAProxy.
  • Ich verwende derzeit emqtt Broker, der Clustering unterstützt und das Load Balancing-Problem wird dadurch gelöst, aber es scheint, dass es keine geteilten Subskriptionen über Cluster-Knoten unterstützt.

Ein Feature wie die Kafka Consumer Group ist das, was ich glaube. Irgendwelche Ideen?

Antwort

1

Haben Sie versucht HiveMQ?
Es bietet so genannte shared subscriptions.

Wenn gemeinsam genutzte Abonnements verwendet werden, empfangen alle Clients, die das gleiche Abonnement verwenden, abwechselnd Nachrichten.

+0

Danke. Ich habe vergessen zu erwähnen, dass ich darüber gelesen habe, aber ich suche nach einer Open-Source-Lösung, die so etwas wie geteilte Abonnements anbietet oder offen darüber ist, wie ein solches Szenario gehandhabt wird, wenn keine gemeinsamen Abonnements vorhanden sind. – Avi

+0

Side node: Shared Subskriptionen sind derzeit nicht Teil der MQTT-Spezifikation (3.1.1), so dass sich jede Implementierung unterscheidet. v5 spec enthält freigegebene Subskriptionen als optionale Komponente, sodass alle Implementierungen interoperabel sein sollten. – hardillb

Verwandte Themen