Потребительские шаблоны Spring Cloud Stream Kafka

Для темы с несколькими разделами -

1) Использует ли один экземпляр SpringBoot несколько потоков для обработки (метод, аннотированный StreamListener) каждого сообщения из каждого раздела?

2) Можно ли настроить более одного потока для каждого раздела или это то, что мне придется вручную передать из моего потока слушателя в рабочий пул?


person Ajay    schedule 05.02.2017    source источник


Ответы (1)


....consumer.concurrency управляет количеством потоков (по умолчанию 1).

Разделы распределяются по потокам. Если у вас 20 разделов и 4 потока; они получат по 5 разделов.

Вам необходимо иметь как минимум столько секций, сколько совокупный параллелизм во всех экземплярах. (Если у вас есть 2 экземпляра приложения и 5 потоков в каждом, вам нужно как минимум 10 разделов).

Вы не должны распределять сообщения из одного раздела по нескольким потокам; смещение будет зафиксировано, как только вы перейдете к новому потоку, и это может привести к потере сообщения.

Вы всегда должны ошибаться в том, чтобы иметь больше разделов, чем требуется для параллелизма.

person Gary Russell    schedule 05.02.2017
comment
Чтобы добавить к комментарию Гэри, вот хорошая статья, которая проведет вас через процесс определения размера. confluent.io/blog/ - person Marius Bogoevici; 05.02.2017