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