2016-11-21 6 views
0

Ich bin neu in Kafka und das Szenario, das ich mit Apache Kafka erreichen möchte, ist:Apache Kafka: Können wir die Nachricht so einschränken, dass sie nur von einem Verbraucher gelesen wird?

Ich habe 3 Produzenten, die Anweisungen an ein bestimmtes Thema in Kafka senden. Ich habe ungefähr 35 Verbraucher, die jeweils eine Anweisung aufnehmen und die im Anweisungssatz erwähnte Aufgabe ausführen. Sobald es fertig ist, wird es die Aktualisierungen zu einem anderen Thema in Kafka veröffentlichen.

Anforderungen.

  1. Ein von 1 Verbraucher Lesebefehl nicht zu einem anderen sollte
  2. Nachrichtenpriorität * für die Verarbeitung gegeben - zu einer Zeit, bis zur Verarbeitung nicht zwingend erforderlich
  3. Nur 1 Anweisung aufgenommen werden sollte.

Ich weiß, dass dies mit JMS erreicht werden kann. Aber meine Organisation hat bereits ein Kafka-Setup als Teil des HDFS-Setups der Cloud-Ära. Daher ist die Verwendung von Kafka am meisten bevorzugt.

Ich habe gegoogled um eine Lösung dafür zu finden. Aber ich konnte keine richtige Antwort auf meine erste und wichtigste Anforderung finden.

Irgendwelche Vorschläge? Und danke im Voraus.!

+0

Werfen Sie einen Blick hier: http://stackoverflow.com/documentation/apache-kafka/5449/consumer-groups-and-offset-management –

+0

Darüber hinaus können Sie jeden Verbraucher konfigurieren über den Parameter "max.poll.records = 1" eine einzige Nachricht pro Aufruf zu erhalten. Siehe http://kafka.apache.org/documentation#newconsumerconfigs –

Antwort

2

Alles, was Sie tun müssen, ist, die Verbraucher in dieselbe Verbrauchergruppe zu legen, indem Sie ihnen dieselben group.id zuweisen. Nur eine Instanz eines Verbrauchers in derselben Gruppe erhält eine Nachricht.

Siehe Dokumentation bei https://kafka.apache.org/documentation#intro_consumers

+1

Siehe auch Parameter "max.poll.records" http://kafka.apache.org/documentation#newconsumerconfigs –

Verwandte Themen