Пользователь Spring kafka читает меньше фрагмента в batchlistener

#java #spring #spring-boot #apache-kafka #spring-kafka

#java #spring #spring-boot #apache-kafka #spring-kafka

Вопрос:

Я создаю пользовательское приложение Spring Kafka, которое использует сообщения из раздела Kafka и выполняет задачу базы данных. Сообщения создаются большим пакетом один раз в день — таким образом, в теме загружается около 5 миллионов сообщений за 30 минут. Тема состоит из 3 разделов.

Потребитель Spring Kafka (с аннотацией @KafkaListener и использованием ConcurrentKafkaListenerContainerFactory) запускается очень короткими пакетами.

Размер пакета иногда составляет всего 1 или 2 сообщения. Это повысило бы производительность, если бы он мог получать около 500 сообщений одновременно и обрабатывать их вместе (например, я мог бы обновлять базу данных с помощью одного обновления SQL), вместо подключения к базе данных для каждого сообщения.

Есть ли какая-либо другая конфигурация, которую я мог бы использовать для увеличения размера bath потребителя, чтобы он мог извлекать не менее 500 записей, а затем вызывать прослушиватель? Ниже приведены мои конфигурации. Есть ли что-нибудь, вызывающее минимальные записи опроса?

spring.kafka.consumer.fetch-min-size=12000
spring.kafka.consumer.выборка-maxt-wait=20000
spring.kafka.consumer.max-poll-records =500
запросов.kafka.listener.type=BATCH
sping.kafka.listener.poll-timeout = 20000

Комментарии:

1. Нет; нет min.poll.records только fetch-min-size (который соответствует fetch.min.bytes свойству Kafka) и fetch-max-wait (K: fetch.max.wait.ms ). Однако у вас действительно есть опечатка в fetch-max-wait . Непонятно, почему вы получаете такие короткие пакеты, учитывая вашу конфигурацию.

2. Привет @GaryRussell, я дополнительно увеличил минимальный размер выборки, теперь он работает у меня с той же конфигурацией.

3. Попробуйте установить для max.partition.fetch.bytes большее значение