Конфигурирование клиентского модуля#

Schema Registry Client (SR Client)#

SR Client — Java API для выполнения всех запросов к SR Server.

SR Client кеширует данные, полученные из REST Server. Поэтому, если схемы были пересозданы (удалены и повторно добавлены) или добавлена новая версия схемы, то приложение, которое использует SR Client, нужно перезапустить.

Для создания SR Client существуют три конструктора:

<Constructor-1> (url, user, password, sslCfg, AllowHosts):

Имя

Тип

Значение по умолчанию

Описание

url

String

null

Адрес сервера Schema Registry

user

String

null

Имя пользователя

password

String

null

Пароль пользователя

sslCfg

SslContextConfig

null

Сконфигурированный контекст для безопасного соединения

allowAllHosts

boolean

null

Флаг, отключающий проверку имени хоста

<Constructor-2> (urls, user, password, sslCfg, AllowHosts):

Имя

Тип

Значение по умолчанию

Описание

urls

List[String]

null

Список адресов серверов Schema Registry

user

String

null

Имя пользователя

password

String

null

Пароль пользователя

sslCfg

SslContextConfig

null

Сконфигурированный контекст для безопасного соединения

allowAllHosts

boolean

null

Флаг, отключающий проверку имени хоста

<Constrictor-3> (cfg, sslCfg, AllowHosts):

Имя

Тип

Значение по умолчанию

Описание

cfg

SchemaRegistryClientConfig

null

Конфигурация пользователя, которая содержит адреса серверов SR, имя и пароль пользователя

sslCfg

SslContextConfig

null

Сконфигурированный контекст для безопасного соединения

allowAllHosts

boolean

null

Флаг, отключающий проверку имени хоста

Schema Registry Serde (SR Serde)#

SR Serde — компонент Schema Registry, сериализатор (десериализатор), который:

  • сериализует данные и записывает в топик;

  • читает данные из топика и десериализует.

SR Serde необходимо использовать для клиентов (Производителей/Потребителей), если требуется валидация данных по схеме на стороне клиента.

Конфигурация производится в коде клиентского приложения.

Для Производителя в качестве сериализатора используется:

  • key.serializer=ru.sbrf.kafka.schemaregistry.schemas.SchemaRegistrySerde (если необходимо валидировать ключи сообщений);

  • value.serializer=ru.sbrf.kafka.schemaregistry.schemas.SchemaRegistrySerde.

Для Потребителя в качестве десериализатора используется:

  • key.deserializer=ru.sbrf.kafka.schemaregistry.schemas.SchemaRegistrySerde (если применяется валидация для ключей сообщений);

  • value.deserializer=ru.sbrf.kafka.schemaregistry.schemas.SchemaRegistrySerde.

Имя

Значение по умолчанию

Описание

schema.url

null

Адрес SR Server

schema.user

null

Имя пользователя для подключения к REST server

schema.password

null

Пароль пользователя для подключения к REST server. Указывая пароль, шифрованный стандартным для Corax способом, используйте постфикс – schema.password.encrypted

schema.type

AVRO

Тип данных и схемы. Поддерживаются AVRO и JSON

schema.name.strategy

null

Имя класса, реализующего интерфейс SubjectNameStrategy

schema.use.latest

true

Использовать последнюю на момент старта версию схемы

[subject].version

null

[subject] — имя subject. Значение ключа задает версию схемы для сериализации. Пример: accounts-value.version=2 — использовать вторую версию схемы для value топика accounts. accounts-key.version=3 — использовать третью версию схемы для ключей топика accounts

confluent.compatible.serialization

true

Если true, то данные записываются так же, как это делает Confluent Schema Registry Serializer (KafkaJsonSchemaSerializer и другие). Иначе данные записываются как есть

Для расшифровки пароля клиента следующие настройки:

Имя

Значение по умолчанию

Описание

schema.security.encoding.class

null

Дешифрование настроек приложения. Шифрованное значение должно иметь вид ${decrypt:ENCRYPTED_VALUE}. Имя класса, который зашифровывает пароли; имплементирующий интерфейс ru.sbrf.kafka.security.PasswordDecoder

schema.security.encoding.salt

null

Ключ для шифрования

schema.security.encoding.key

null

Имя класса провайдера соли, имплементирующий интерфейс ru.sbrf.kafka.security.SaltProvider

schema.security.encoding.salt.location

null

Путь к файлу, содержащему salt

SubjectNameStrategy — реализация данного интерфейса генерирует два вида идентификаторов.

Если стратегия имен по умолчанию не подходит, реализуйте этот интерфейс самостоятельно:

  1. subject — имя субъекта по имени топика и признаку isKey. По умолчанию для value имя субъекта совпадает с именем топика, в конце добавляется -value. Пример: accounts-value.

    Для ключей добавляется -key. Пример: accounts-key.

  2. version — ключ, в котором будет лежать номер версии схемы. По умолчанию [subject].version. Пример:

    • accounts.version=2 — использовать вторую версию схемы accounts;

    • accounts-key.version=3 — использовать третью версию схемы для ключей топика accounts.