Json-extractor-interceptor#

Реализует интерфейс ProducerInterceptor, позволяет добавлять в заголовки сообщения поля, извлеченные из тела JSON-сообщения c помощью JsonPath.

Предусловия#

Поддерживаемые типы данных:

  • String;

  • Array<Byte> (преобразуется в строку с настраиваемой кодировкой);

  • Любой другой объект (преобразуется в строку с помощью метода toString).

Последовательность выполнения#

Подключение к Kafka Producer#

  1. Добавить актуальную версию интерсептора в зависимости проекта.

  2. Добавить настройки интерсептора к настройкам Kafka Producer в соответствии с примером.

Примеры конфигурации#

Пример JSON#

{
    "message": {
        "id": "someId",
        "body": "messageBody"
    }
}

Пример конфигурации для извлечения поля id и добавления его в заголовок под именем MessageID#

...
# 1) Подключить interceptor
interceptor.classes = ru.sbt.ss.kafka.clients.producer.JsonExtractorInterceptor

# 2) Указать путь до нужного поля с помощью JsonPath
interceptor.json.extractor.path = $['message']['id']

# 3) Укaзать имя заголовка, в который будет добавлено значение поля
interceptor.json.extractor.header.name = MessageID

# 4) ОПЦИОНАЛЬНО Укзаать тип кодировки (по умолчанию UTF-8) для типов Array<Byte>
# interceptors.json.extractor.encoding = UTF-8

Результат#

Выполнено подключение интерсептора Json-extractor-interceptor.