Как получить строковые сообщения из необработанных объектов буфера Kafka Java - PullRequest
0 голосов
/ 11 марта 2019

Существует узел-производитель Kafka, который отправляет содержимое файла в Kafka. Когда потребитель Kafka принимает сообщения от Kafka, это выглядит как -

{"type":"Buffer","data":[91,13 .....]

Когда я использовал m.message.value.toString('utf8') в nodejs Kafka, он выводит реальное сообщение. Но мне нужно потреблять в java Kafka потребителя. Я пробовал с property.put("value.serializer.encoding", "utf8") и new String(consumerRecord.value()), но все еще печатал {"type":"Buffer","data":[91,13 .....]. Мой вопрос заключается в том, как использовать сообщение в строковом формате в Java, созданное производителем nodejs Kafka.

1 Ответ

0 голосов
/ 11 марта 2019

Вы должны использовать правильный сериализатор ключей и значений при вызове API производителя и потребителя.

Кафка предоставляет некоторые ключи по умолчанию и сериализатор значений, такие как StringSerializer и т. Д.

String serializer для создания и потребления строковых сообщений.

props.put ("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); props.put ("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

Например, вы можете сослаться на документ производителя и потребителя.

https://kafka.apache.org/10/javadoc/org/apache/kafka/clients/producer/KafkaProducer.html https://kafka.apache.org/10/javadoc/?org/apache/kafka/clients/consumer/KafkaConsumer.html

Реестр схем Поскольку вы отправляете сообщение из nodejs и потребляете это сообщение с использованием приемника kafka, вам необходимо предоставить тот же ключ и значение средства для удаления сообщений в приемнике java kafka.

Существует один вариант решения этой несовместимой проблемы: использовать schema-registry для хранения схемы нашего сообщения с использованием kafka avro. Затем мы можем использовать эту схему в nodejs-kafka-производителе и java-kafka-потребителе, чтобы получить сообщение.

Nodejs kafka производитель с примером avro

Вот пример nodejs kafka avro enter image description here

Потребитель Java Kafka, использующий реестр схемы пример

...