Я играю с Кафкой, пытаюсь справиться с этим.Одна из вещей, которую мы должны уметь делать - это запускать наборы серверов с балансировкой нагрузки - для обеспечения избыточности / высокой доступности / и т. Д. - и затем перезагружаться независимо друг от друга.Должно быть просто.
То, что я нашел, немного странно.Если у меня работает один потребитель Kafka, который обрабатывает набор сообщений, а затем я добавляю второго потребителя к той же группе потребителей , пока сообщения обрабатываются, я получаю множество сообщений.раз вместо одного раза.
Например, вот мои файлы журналов только от такого запуска: https://gist.github.com/sazzer/5604d0652ff14533654c8b543942c10e
Это использует 2 Темы - kafka-live и kafka-bulk.Каждая тема имеет 2 раздела - по одному для каждого потребителя.Затем тест добавляет 20 сообщений в массовую очередь, а затем 10 в оперативную очередь.(Это было на самом деле тестирование чего-то другого, но я просто повторно использовал настройки)
Из журналов вы увидите, что каждое сообщение обрабатывается в общей сложности 3 раза, а не один раз, как я ожидал.
Код для этого следующий: https://gist.github.com/sazzer/c67e4db9a04aac8c0d46bbc21188775d
Это использует Spring Boot и Spring Kafka, и - кроме этого одного случая - это просто сработало.
Я что-то упускаю, чтобы остановить воспроизведение всех сообщений, когда появляется новый потребитель?Или мне нужно иметь дело с этим?
Приветствия