DSL-interceptor#
Реализует интерфейсы ProducerInterceptor и ConsumerInterceptor, позволяет преобразовывать тело сообщений при помощи DSL модуля declarative-mapper продукта EVP. На вход и выход модуля ожидается одно сообщение.
Подключение к Kafka Consumer#
Добавить актуальную версию перехватчика в зависимости проекта.
Добавить настройки перехватчика к настройкам kafka-клиента.
Сконфигурировать трансформацию с помощью DSL.
Примеры конфигурации#
Конфигурация Kafka client#
...
# 1) Подключить interceptor
interceptor.classes=ru.sbt.ss.kafka.clients.dsl.DslInterceptor
# 2) Указать путь до конфигурационного файла DSL:
interceptor.dsl.config=/users/test/kafka/dsl-interceptor/data/interceptor.conf
Пример конфигурационного файла DSL#
{
dsl: "simple.tr"
environmentVariables: {
envName: "envValue"
}
input: {
type: "avro"
schemaName: "simpleSchema.avsc"
}
output: {
type: "json"
}
}
, где:
dsl— расположение правил трансформации;environmentVariables— используемые переменные среды;input— формат входящего события;output— формат исходящего события.
Значения полей input и output могут иметь значения:
Событие в формате JSON:
type— со значением JSON;encoding— используемая кодировка.
Событие в формате XML:
type— со значением XML;encoding— используемая кодировка.
Событие в формате CSV:
type— со значением CSV;encoding— используемая кодировка;columnSeparator— разделитель полей событий;fieldNames— список имен полей события для использования при трансформации, также определяет порядок полей.
Объект с полями:
type— со значением AVRO;schema— список схем с указанием пути вpath; объект, имеющий логическое полеdefaultсо значениемtrue, будет считаться схемой по умолчанию.
Загрузка конфигурации/схем из classpath#
Для загрузки конфигурации/схем из classpath необходимо указать протокол classpath:// в пути до файла, например:
для файла конфигурации:
interceptor.dsl.config=classpath://dsl-interceptor/data/interceptor.confдля файла DSL:
dsl: "classpath://simple.tr"для AVRO-схемы:
schemaName: "classpath://simpleSchema.avsc"
Относительные пути в конфигурации#
Относительные пути до файлов в конфигурации обычно разрешаются относительно директории запуска приложения.
В некоторых случаях (для автоматических установок, например, для установок с помощью скриптов) может быть полезно явно указать root-директорию, относительно которой будут разрешаться относительные пути:
interceptor.config.root.dir(общая для всех перехватчиков с подобной настройкой);interceptor.dsl.config.root.dir(переопределяет общую настройку).
Данная настройка не применяется к путям в classpath (classpath://path/to/file.txt)
Пример конфигурации:
interceptor.dsl.config.root.dir=/full/path/to
# interceptor.config.root.dir=/full/path/to
# /full/path/to/validator.conf
interceptor.dsl.config=validator.conf
Также работает и для путей в конфигурационном файле:
{
# /full/path/to/simple.tr
dsl: "simple.tr"
environmentVariables: {
envName: "envValue"
}
input: {
type: "avro"
# /full/path/to/simpleSchema.avsc
schemaName: "simpleSchema.avsc"
}
output: {
type: "json"
}
}