У меня есть проект весенней загрузки с потребителем kafka. Мне нужно обрабатывать ошибки, если приходит какое-то сообщение - остановите контейнер. Поэтому я добавил эти настройки:
spring.kafka.consumer.max-poll-records: 1
Теперь мне нужно знать, какое влияние (большое или не очень) это окажет на производительность с этим параметром и без него (по умолчанию 500). Если я оставлю значение по умолчанию, то kafkaListenerEndpointRegistry.getListenerContainer("myID").stop(); не будет выполняться до тех пор, пока слушатель kafka не обработает все сообщения, которые находятся в пакете, и это не годится для меня для порядка.
Вы должны измерить это. Существует скрипт kafka-verifiable-producer.sh, который может помочь вам создать большое количество сообщений. А на стороне потребителя вы можете измерить, сколько требуется для использования всех сообщений со значением по умолчанию и сколько с spring.kafka.consumer.max-poll-records: 1
Скрипт уже предоставлен. Вы можете скачать Kafka отсюда: kafka.apache.org/downloads, и у вас будет включен этот скрипт. Здесь вы можете увидеть, как вы можете запустить этот скрипт confluent.io/blog/…. Вы не можете передать max-poll этому сценарию. Вы можете просто указать сценарию создать миллион сообщений для kafka, а затем установить потребителя с помощью spring.kafka.consumer.max-poll-records: 1 и посмотреть, как долго потребитель обрабатывает сообщения. После того, как вы измерите это, перенастройте потребителя и повторите попытку, на этот раз с настройками по умолчанию.
Почему вы сняли принятую отметку с ответа? Есть ли какая-то часть ответа, которую вы не понимаете?
Благодарю. есть ли пример реализации этого скрипта, который показывает время и принимает параметр max-poll-records?