Kafka Java SimpleConsumer seltsame Codierung

8

Ich versuche, den SimpleConsumer in Kafka 9 zu verwenden, um Benutzern zu erlauben, Ereignisse von einem Zeitversatz wiederzugeben - aber die Nachrichten, die ich von Kafka zurückerhalte, sind in einer sehr merkwürdigen Kodierung:

%Vor%

Mit dem Kafka Consumer lassen sich diese Meldungen gut parsen. Hier ist der Code, den ich verwende, um Nachrichten mit dem SimpleConsumer abzurufen:

%Vor%

Ich habe den Code hinzugefügt, um die ersten x Bytes zu überspringen, nachdem ich immer wieder UTF-32-Fehler bekommen habe, weil Bytes zu hoch sind, was vermutlich darauf zurückzuführen ist, dass Kafka den Nutzdaten Informationen wie die Nachrichtengröße voraddiert. Ist das ein Avro-Artefakt?

    
Gandalf 02.06.2016, 17:38
quelle

3 Antworten

0

Ich habe nie eine gute Antwort darauf gefunden - aber ich habe die SimpleConsumer verwendet, um Kafka nach den Offsets zu fragen die ich brauchte (pro Partition ... obwohl die Implementierung schlecht ist) und dann Verwenden Sie den nativen KafkaConsumer mit seek(TopicPartition, offset) oder seekToBeginning(TopicPartition) , um die Nachrichten abzurufen . Hoffentlich werden sie dem nativen Client die Fähigkeit hinzufügen, Nachrichten von einem bestimmten Zeitstempel in der nächsten Version abzurufen.

    
Gandalf 08.06.2016, 23:18
quelle
0

Suchen Sie das?

%Vor%     
Kamal Chandraprakash 09.06.2016 13:21
quelle
0

Sie können die Partition in regelmäßigen Abständen mit dem Zeitstempel der Nachricht protokollieren (möglicherweise nicht bei jedem Commit) und dann können Sie in Zukunft eine Kennzahl für die Offsets Ihrer Kunden festlegen. Ich nehme an, dies ist für die Produktion Debugging.

Ich bezweifle, dass sie ein solches Feature hinzufügen würden, es scheint unmöglich zu sein, wenn man bedenkt, wie Kafka funktioniert, obwohl ich mich irren kann, es gibt immer geniales Zeug. Ich würde das Logging machen.

    
fd8s0 13.06.2016 14:34
quelle