Запрос по умолчанию SchemaRegistryClient, используемый KafkaAvroDeserializer - PullRequest
1 голос
/ 21 февраля 2020

Мы используем реестр схемы в нашем приложении, и для десериализации мы используем:

KafkaAvroDeserializer kafkaAvroDeserializer = new KafkaAvroDeserializer ();

В настоящее время мы используем значение по умолчанию конструктор. Однако я вижу, что у нас есть несколько других вариантов для переопределения SchemaRegistryClient. В Confluent я вижу, что у нас есть CachedSchemaRegistryClient присутствует.

Мои вопросы:

  1. Если мы используем конструктор по умолчанию, KafkaAvroDeserializer будет вызывать реестр схемы для каждого без исключения запрос к topi c, или он будет кэшировать схему у потребителя?

  2. Для кэширования схемы нужно ли явно использовать CachedSchemaRegistryClient для поддержки локального кэша?

https://github.com/confluentinc/schema-registry/blob/master/client/src/main/java/io/confluent/kafka/schemaregistry/client/CachedSchemaRegistryClient.java

1 Ответ

0 голосов
/ 21 февраля 2020

new KafkaAvroDeserializer() включает в себя клиент CachedSchemaRegistry

Другой конструктор предназначен в основном для тестирования.

Если мы используем конструктор по умолчанию, KafkaAvroDeserializer будет вызывать реестр схемы для каждого запроса topi c или кэшировать схему у потребителя

Он кэширует

Для кэширования схемы нужно ли явно использовать CachedSchemaRegistryClient для поддержки локального кэша?

Как уже говорилось, для вас внутреннее управление кэшем

В настоящее время мы используем конструктор по умолчанию

Не совсем понятно, зачем вы это делаете. props.set("....deserializer", KafkaAvroDeserializer.class) отлично работает в большинстве случаев

...