Это возможно? производитель batch.size * max.request.size> брокер max.message.bytes - PullRequest
0 голосов
/ 15 января 2019

Средний размер сообщения невелик, но размер варьируется.

  • Средний размер сообщения: 1 КБ
  • 1Мбайт сообщений о доходах в произвольном темпе. / Итак, производитель max.request.size = 1MBytes
  • max.message.bytes брокера = 2MBytes

Мои вопросы.

  1. Чтобы избежать появления ошибки размера, пользователь должен установить batch.size LTE 2?
  2. Или библиотека производителя автоматически определяет размер пакета, чтобы избежать ошибки? (даже пользователь установил большой пакетный размер)

Спасибо.

1 Ответ

0 голосов
/ 15 января 2019

Ниже приведено определение соответствующих конфигов, о которых идет речь

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

batch.size : производитель будет пытаться пакетировать записи, пока не достигнет batch.size, прежде чем он будет отправлен в kafka (при условии, что batch.size настроен так, чтобы иметь приоритет над linger.ms). По умолчанию - 16384 байт

max.request.size : максимальный размер запроса в байтах. Этот параметр будет ограничивать количество пакетов записей, которые производитель отправит за один запрос, чтобы избежать отправки огромных запросов. Это также эффективно ограничивает максимальный размер пакета записи. По умолчанию - 1048576 байт

Конфигурация брокера

message.max.bytes : Наибольший размер пакета записи, разрешенный Kafka. По умолчанию - 1000012 байт

replica.fetch.max.bytes : Это позволит репликам в посредниках отправлять сообщения в кластере и обеспечивать правильную репликацию сообщений.

Чтобы ответить на ваши вопросы

  1. Чтобы избежать ошибок отправки производителем, вам не нужно устанавливать размер пакета 2 МБ, так как это задержит передачу ваших сообщений небольшого размера. Вы можете сохранить размер пакета в соответствии со средним размером сообщения и в зависимости от того, сколько вы хотите пакетировать

  2. Если вы не укажете размер пакета, будет использовано значение по умолчанию, которое 16384 байта

Таким образом, в основном вам необходимо настроить «max.request.size»> = 2 МБ, а также «message.max.bytes» и «replica.fetch.max.bytes» посредника> = 2 МБ.

...