Мы используем кафку 0.10.2.1. В документации указано, что буфер доступен для отправки, даже если он не заполнен.
По умолчанию буфер доступен для немедленной отправки, даже если в буфере есть дополнительное неиспользуемое пространство. Однако, если вы хотите уменьшить количество запросов, вы можете установить linger.ms на значение больше 0.
Тем не менее, в нем также говорится, что производитель будет пытаться пакетировать запросы, даже если время задержки установлено на 0 мс-
Обратите внимание, что записи, которые поступают близко друг к другу по времени, обычно группируются вместе даже с linger.ms = 0, поэтому при большой нагрузке группирование будет происходить независимо от конфигурации задержки; однако установка значения больше 0 может привести к меньшему количеству и более эффективным запросам, когда они не находятся под максимальной нагрузкой, за счет небольшой задержки.
Интуитивно кажется, что любой вид пакетирования потребует некоторого времени задержки, и единственный способ достичь времени задержки 0 - это синхронизировать вызов брокера. Очевидно, что сохранение времени задержки на уровне 0, похоже, не вредит производительности так сильно, как блокировка вызова send, но, похоже, оказывает некоторое влияние на производительность. Может кто-нибудь прояснить, о чем говорится в документах выше?