Gymterview
middle

Какие настройки продюсера существуют?

Настройки продюсера определяют сериализацию, буферизацию, сжатие, партицирование и гарантии доставки.

Bootstrap-серверы

Настройка Описание Пример
bootstrap.servers Адреса брокеров для подключения и получения метаданных кластера localhost:9092,localhost:9093

Сериализация ключа и значения

Настройка Описание Пример
key.serializer Сериализатор ключа StringSerializer
value.serializer Сериализатор значения StringSerializer

Варианты сериализаторов: StringSerializer, ByteArraySerializer, LongSerializer, а также пользовательские реализации.

Отправка сообщений в буфер

Настройка Описание Пример
batch.size Размер пакета в байтах перед отправкой брокеру 16384 (16 KB)
linger.ms Максимальное время ожидания перед отправкой пакета 5 (5 мс)
buffer.memory Общий объём памяти для буферизации сообщений 33554432 (32 MB)

Сжатие

Настройка Описание Значения
compression.type Тип сжатия для сообщений none, gzip, snappy, lz4, zstd

Партицирование

Настройка Описание Пример
partitioner.class Логика выбора партиции для сообщения DefaultPartitioner, RoundRobinPartitioner, UniformStickyPartitioner

Подтверждения (acks)

Значение Описание
0 Продюсер не ждёт подтверждений — максимальная скорость, высокий риск потери
1 Ждёт подтверждения от лидера партиции
all (-1) Ждёт подтверждений от всех ISR-реплик — максимальная надёжность

Дополнительные настройки

Настройка Описание Пример
retries Количество повторных попыток при неудаче 3
enable.idempotence Включение идемпотентности для exactly-once true
max.request.size Максимальный размер сообщения 1048576 (1 MB)
request.timeout.ms Таймаут ожидания подтверждения от брокера 30000 (30 сек)

На собеседовании: популярный вопрос — объяснить разницу между acks=0, acks=1 и acks=all. Покажите, что понимаете компромисс: acks=0 — fire-and-forget (потеря возможна), acks=1 — лидер подтвердил (потеря при падении лидера до репликации), acks=all — все ISR подтвердили (потеря практически невозможна, но выше latency).