Frage

Ist es bei der Verwendung von Apache Kafka möglich, den Offset der erzeugten Nachricht abzurufen?

Auf der Seite von Kafka Dokumentation heißt es:

Jeder Nachricht in der Partition wird eine eindeutige fortlaufende ID/Nummer namens Offset zugewiesen

Nehmen wir nun an, wenn ich eine Nachricht produziere, möchte ich den ihr zugewiesenen Offset abrufen.

War es hilfreich?

Lösung

Sie sollten dies nicht von einer Klasse aus tun, die als Producer fungiert, wie in den meisten Warteschlangensystemen, da ihre Verantwortung darin besteht, die Nachrichten einfach abzufeuern und zu vergessen.Der Broker führt die entsprechende Metadatenbehandlung mit IDs, Offsets und allem, was er benötigt, um die Nachrichten korrekt zu verarbeiten, durch.

Sie können die Offsets als Verbraucher von Nachrichten von einem Kafka-Broker erhalten.Wenn Sie sich die Klasse SimpleConsumer ansehen, werden Sie feststellen, dass sie MultiFetchResponse-Objekte abruft, die Offsets als Liste enthalten.Wenn Sie die Kafka-Nachrichten iterieren, erhalten Sie außerdem ein NachrichtUndOffset-Objekt, das sowohl die gesendete Nachricht als auch ihren Offset enthält.

Andere Tipps

Das Producer-Response-Protokoll stellt den Offset der ersten im Messageset gesendeten Nachricht bereit.Sofern die von Ihnen verwendete API/Implementierung diese Informationen offenlegt, sollten Sie sie aus der Antwort auf die Erstellung Ihrer Nachricht abrufen können. Mehr hier: https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-ProduceResponse

Lizenziert unter: CC-BY-SA mit Zuschreibung
scroll top