Разница в сериализации Кафки между LongSerializer и Serdes.LongSerde - PullRequest
0 голосов
/ 01 октября 2019

Мы пишем новое приложение, которое публикуем в Kafka, и нам нужно сериализовать ключ сообщений как длинное значение. При проверке документов Kafka на сериализацию кажется, что существует два длинных класса сериализатора, таких как LongSerializer и Serdes.LongSerde. Мы попытались найти ссылку на разницу между ними, но не смогли найти ссылку, объясняющую разницу. Благодарим Вас за то, что кто-то может сообщить нам / поделиться ссылкой, которая объясняет разницу между ними. Или это одно и то же?

Основная ссылка на сериализатор Doc: https://kafka.apache.org/11/javadoc/org/apache/kafka/common/serialization/package-frame.html

LongSerializer: https://kafka.apache.org/11/javadoc/org/apache/kafka/common/serialization/LongSerializer.html

Serdes.LongSerde: https://kafka.apache.org/11/javadoc/org/apache/kafka/common/serialization/Serdes.LongSerde.html

Спасибо.

1 Ответ

0 голосов
/ 01 октября 2019

Как вы должны знать, сообщения Kafka (Brokers) - это массивы байтов (ключи, значения).

KafkaProducer, KafkaConsumer и KafkaStreams должны знать, как писать и читать сообщения - преобразовать их из POJO вмассив байтов и наоборот.

Для этой цели используются org.apache.kafka.common.serialization.Serializer и org.apache.kafka.common.serialization.Deserializer. KafkaProducer использует Serializer - для преобразования Key и Value в массив байтов, а KafkaConsumer использует Deserializer для преобразования массива байтов в Key и Value. Приложения KafkaStreams выполняют как запись действий, так и чтение (в / из темы), и для этого org.apache.kafka.common.serialization.Serdes - это своего рода оболочка для Serializer и Deserializer.

В вашем примере :

  • LongSerializer - это класс, который должен использоваться для перевода Long в массив байтов
  • LongSerde - это класс, который должен использоваться вПриложение Kafka Streams для чтения и записи Long (под капотом используется LongSerializer и LongDeserializer)

Дополнительное чтение:

...