#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
большее значение