Spring Kafka и опрос стратегии на нескольких разделах - PullRequest
1 голос
/ 14 января 2020

Допустим, у меня есть топи c, которая имеет 4 раздела. Я использую записи с помощью микросервиса Spring Kafka, используя аннотацию @KafkaListener. Этот микросервис докеризован, и у меня есть два его экземпляра. Каждый экземпляр затем подключается к двум разделам.

Я наблюдаю, когда у меня есть задержка, чтобы догнать, что экземпляр остается на том разделе, на котором он был, и позволяет второму разделу накапливать задержку. Затем он переключится на этот второй раздел только тогда, когда мы перестанем создавать сообщения, и задержка на первом разделе будет полностью использована.

Порядок потребления в моем приложении важен лишь частично. Под этим я подразумеваю, что могу обрабатывать их в другом порядке, но я не могу позволить сообщению оставаться в разделе слишком долго.

Простым решением было бы просто иметь четыре экземпляра docker и все будет хорошо.

Есть ли в spring-kafka некоторые свойства, которые позволили бы нам изменить стратегию опроса, когда KafkaListener подключен к нескольким разделам. Идея заключалась бы в том, что он будет циклически проходить опрос, который присваивается каждому разделу при каждом опросе

Спасибо за чтение!

1 Ответ

1 голос
/ 14 января 2020

Вы можете установить потребителя (контейнер слушателя) concurrency для каждого экземпляра равным 2; таким образом, у вас будет 4 потребителя в 2 случаях.

С пружинной загрузкой это spring.kafka.consumer.concurrency. Если вы создаете свою собственную фабрику, установите свойство напрямую.

...