Как создать одновременный прослушиватель сообщений для темы Kafka с 1 разделом

Использование Spring Kafka org.springframework.kafka.listener.ConcurrentMessageListenerContainer создает несколько прослушивателей на основе свойств контейнера и количества разделов в теме. И javadoc говорит: «Сообщения из одного раздела будут обрабатываться последовательно». Итак, если существует только 1 раздел и для параллелизма установлено значение 10, что произойдет - параллелизма не будет? или сообщения будут разосланы 10 слушателям, но не по порядку?


person user3366706    schedule 21.11.2017    source источник
comment
После некоторого дополнительного исследования я предполагаю, что если есть 10 потребителей с идентификатором выборочной группы и тема имеет 1 раздел, только 1 из 10 потребителей получит сообщения, а остальные потребители будут бездействовать. Я правильно понимаю?   -  person user3366706    schedule 21.11.2017
comment
Это правильно; только один потребительский экземпляр может использовать из одного раздела. Параллелизм ограничен количеством секций.   -  person Gary Russell    schedule 21.11.2017


Ответы (1)


Нет, определенно будет только один целевой слушатель. Один раздел - один процесс для потребителя на группу потребителей. Это природа Apache Kafka. Это не проблема Spring Kafka.

В последнее время вы можете распараллеливать сообщения из этого раздела из вашего метода слушателя, используя TaskExecutor. Но это уже ваше приложение - Framework ничего за вас не сделает. Просто потому, что природа целевой системы Кафки.

person Artem Bilan    schedule 21.11.2017