2017-02-05 2 views
2

Для темы с несколькими разделами -Весна Облако поток Кафка потребительские модели

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

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

ответ

2

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

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

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

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

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

+2

Чтобы добавить комментарий Гэри, вот хорошая статья, которая должна провести вас через процесс калибровки. Https: //www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in- а-Кафка-кластер / –