У меня в топике находится 2 миллиона сообщений, как только я запускаю консюмер он постепенно вижирает всю память. Как решить ету проблему? Дело в том что по предидущим сообщениям память еще не освободилась так как там идет некий процессинг.
а зачем читать все сообщения, если их уже прочитали?
ну вот представь что запушилось в кафку 1 лям сообщений за 2 секунди. Каждое сообщение делает запрос на сторонний сервис и ми ждем response. понятно что ето все происходит асинхронно, и пока ми ждем ответ, нода закидивает в стек другие задачи. И в один момент память кончается. Допустим на 50к сообщении
окей, а зачем читать 50к сообщений, если знаешь, что память заканчивается?
прочитал 10к, отпроцессил, прочитал следующие
ну вот есть такой код. Как сказать чтоб по 1к сообщений в секунду максимум получать?
в хэндлере ++, в then -- перед хэндлером проверить, что счетчик не больше max
нет, зачем слипы перед handleMessage проверить count, внутри handleMessage увеличить, в then/catch уменьшить. ну или ожидать, когда все 1000 завершатся и флажком каким-нибудь регулировать запуск handleMessage.
Обсуждают сегодня