Важные параметры

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

  • broker.id - default -1, уникальный идентификатор брокера в zookeeper. Если не задать, зукипер сгенерирует сам
  • zookeeper.connect - строка подключения к zookeeper в виде hostname:port. Можно указать несколько зукиперов, на случай если один будет недоступен, в виде hostname1:port1,hostname2:port2,hostname3:port3
  • listener.security.protocol.map - не разобрался
  • advertised.listeners - не разобрался
  • offsets.topic.replication.factor - default 3, коэффициент репликации для офсета топика. Не может быть больше чем брокеров в кластере
  • transaction.state.log.min.isr - default 2, переопределяет min.insync.replicas специально для топика транзакции. Не может быть больше чем брокеров в кластере
  • transaction.state.log.replication.factor, default 3, коэффициент репликации для топика транзакции. Не может быть больше чем брокеров в кластере
  • auto.create.topics.enable - true/false, default true, разрешает или запрещает автоматическое создание топиков консьюмером
  • compression.type - default producer, определяет, будет ли применяться компрессия к топику. По умолчанию, кодек выбирает консьюмер. Возможно значение uncompressed, то есть без компрессии
  • delete.topic.enable - default true, разрешает или запрещает удаление топиков
  • min.insync.replicas - default 1, определяет минимальное количество реплик, которые должны отрапортовать об успешной записи. Если это условие не выполнено, будет выброшено исключение
  • request.timeout.ms - default 30000, время ожидания клиентом ответа на запрос. По истечении, будет ретрай, если они остались
  • default.replication.factor - default 1, Коэффициенты репликации по умолчанию для АВТОМАТИЧЕСКИ создаваемых топиков. Рекомендуется ставить 3. Не может быть больше чем брокеров в кластере
  • num.partitions, default 1, количество партиций в топике по умолчанию
  • log.cleanup.policy, default delete, определяет что делать со старыми сообщениями: сжимать или удалять

Конфигурация топика

  • cleanup.policy, default delete, определяет что делать со старыми сообщениями: сжимать или удалять
  • compression.type - default producer, определяет, будет ли применяться компрессия к топику. По умолчанию, кодек выбирает консьюмер. Возможно значение uncompressed, то есть без компрессии
  • min.insync.replicas - default 1, определяет минимальное количество реплик, которые должны отрапортовать об успешной записи. Если это условие не выполнено, будет выброшено исключение

Конфигурация продюсера

  • acks, default 1, определяет сколько подтверждений нужно получить что бы брокер прислал в ответ успешную запись сообщения: просто отправить, получить подтверждение от лидера, получить подтверждение от ISR
  • bootstrap.servers, список брокеров в кластере, к которым будет произведено подключение. Достаточно и одного, дальше кафка всё сделает сама, но лучше несколько если один будет недоступен
  • compression.type, default none, определяет, будет ли производится сжатие данных, отправляемых продюсером
  • client.id, идентификатор продюсера, используется только для справочной информации, например в логах
  • enable.idempotence, default false. Если включить, то продюсер будет контролировать, что бы записалась только одна копия сообщения
  • max.in.flight.requests.per.connection, default 5, непонятно, но надо ставить в 1, что бы работала идемпотентность
  • request.timeout.ms - default 30000, время ожидания клиентом ответа на запрос. По истечении, будет ретрай, если они остались

Конфигурация консьюмера

  • bootstrap.servers, список брокеров в кластере, к которым будет произведено подключение. Достаточно и одного, дальше кафка всё сделает сама, но лучше несколько если один будет недоступен
  • group.id, идентификатор группы, которой принадлежит консьюмер
  • heartbeat.interval.ms, отвечает за то, как часто отправляется хартбит
  • session.timeout.ms, отвечает за то, как долго консьюмер может работать не отправляя хартбит. Должно быть больше чем heartbeat.interval.ms
  • allow.auto.create.topics, default true, разрешать или запрещать консьюмеру создавать топик, если его нет
  • auto.offset.reset, default latest, в случае какого-либо сбоя отвечает за то, с какого сообщения консьюмер начнет вычитывать - с саммого ранненого или с самого позднего
  • enable.auto.commit, default true, отвечает за то, будет ли производиться автоматический коммит оффсета
  • max.poll.interval.ms, default 300000, максимальная задержка между вызовами функции poll(). По истечении времени, консьюмер будет считаться мертвым и начнется ребалансировка
  • partition.assignment.strategy, default class org.apache.kafka.clients.consumer.RangeAssignor, способ распределения партиций между консьюмерами
  • client.id, идентификатор консьюмера, используется для логирования
  • request.timeout.ms - default 30000, время ожидания клиентом ответа на запрос. По истечении, будет ретрай, если они остались