2015-06-04 6 views
6

Ich habe einen Hersteller, der Nachrichten an ein Thema/Partition schreibt. Um Ordnung zu halten, möchte ich mit einer einzelnen Partition gehen und ich möchte, dass 12 Verbraucher alle Nachrichten von dieser einzelnen Partition lesen (keine Verbrauchergruppe, alle Nachrichten sollten an alle Verbraucher gehen). Ist das erreichbar? Ich habe einige Foren gelesen, die nur ein Benutzer pro Partition lesen kann.Kafka mehrere Verbraucher für eine Partition

Antwort

13

Sie können SimpleConsumer verwenden, um genau das zu erreichen, was Sie verlangen - keine Verbrauchergruppen, alle Verbraucher können eine einzelne Partition lesen. Dieser Ansatz bedeutet jedoch, dass Sie selbst mit der Verarbeitung von Offset-Speichern und Broker-Fehlern umgehen müssen.

Eine weitere Option ist die Verwendung von High-Level-Consumer mit verschiedenen Consumer-Gruppen (Sie könnten jedem Consumer einfach eine zufällige UUID zuweisen). Auf diese Weise können Sie ein Thema/eine Partition mit allen Consumern konsumieren und Offsets festlegen sowie Broker-Ausfälle behandeln.

Die Regel "nur ein einziger Verbraucher kann ein Thema/eine Partition konsumieren" gilt nur für Verbrauchergruppen, z. Nur ein Consumer IN GROUP kann gleichzeitig ein Thema/eine Partition konsumieren.

+1

Wenn ich eine eindeutige Consumer Groupid für jeden Verbraucher verwende, werde ich alle Nachrichten für jeden Kunden aus einer einzelnen Partition lesen? ie etwas wie in Code .. props.put ("group.id", KafkaProperties.groupId); – skumar

+2

Ja, wenn Ihr Thema mit einer einzelnen Partition 1000 Nachrichten enthält, lesen alle Konsumenten mit verschiedenen Kundengruppen jeweils 1000 Nachrichten. – serejja

+0

Können Sie bitte einige Beispiele für den Ansatz 1 (Handling Offset und Broker Failer) und für den Ansatz 2 (zuweisen Randow Uui zu jedem Verbraucher) geben ?. – skumar

0

Wenn Sie mehrere Benutzer auf der gleichen Partition haben, schlägt es Ihre ursprüngliche Anforderung der Aufrechterhaltung der Bestellung. Sie hätten zwar Speicherplatz bestellt, aber der Verbrauch wäre nicht geordnet. Stellen Sie sicher, dass Sie damit wirklich einverstanden sind. Wenn ja, können Sie jeden Verbraucher als eine andere Verbrauchergruppe behandeln.