Как отключить заголовки от потребления в кафке - PullRequest
0 голосов
/ 19 ноября 2018

Есть ли возможность отключить использование заголовков Kafka у потребителя.В моем случае я написал для потребителя сообщения из темы Кафки, опубликованной вышестоящей системой.Моя обработка не требует никакой информации от заголовков, и опубликованные заголовки имеют большой вес (больше, чем само сообщение по размеру).Таким образом, мой потребитель тратит больше времени, чем ожидалось.

Любая опция, в которой я могу использовать только содержимое сообщений, оставляя заголовки, чтобы сэкономить время на передачу заголовков по сети и десериализацию их у потребителя.Ваша помощь приветствуется.

1 Ответ

0 голосов
/ 20 ноября 2018

Каждое сообщение - это Запись с заголовками (по состоянию на Кафка 0,11).

length: varint
attributes: int8
    bit 0~7: unused
timestampDelta: varint
offsetDelta: varint
keyLength: varint
key: byte[]
valueLen: varint
value: byte[]
Headers => [Header]

Заголовок записи

headerKeyLength: varint
headerKey: String
headerValueLength: varint
Value: byte[]

Даже если вы проигнорируете их десериализацию, они все равно будут отправлены по проводам как часть тела TCP-пакета Записи.

Можно попробовать, например, использовать клиентскую версию Kafka 0.10.2, которая может полностью отбросить заголовок, потому что они просто не являются частью API, а являются YMMV.

Как уже упоминалось в комментариях, наиболее надежным способом здесь было бы прекратить отправку такой тяжелой информации в апстрим-приложение.Или золотая середина будет сжимать и / или двоично кодировать эти данные.

...