пользователей которые туда попадают обрабатываются консюмерами последовательно в порядке поступления и получается пока таски одного пользователя не обработаются то таски другого не будет обрабатываться.
Есть ли что нибудь что бы дало возможность обрабатывать таски разных пользователей параллельно, равномерно распределив их между консюмерами?
Запустить больше инстансов воркера
Это не решение с таким подходом можно использовать только одну очередь для всего.
Больше воркеров — быстрее разгребается очередь. Это решение.
Ну вот от одного пользователя поступило 1 000 000 тасок а от второго тоже 1 000 000 итд, и хоть сколько воркеров ты поднял а техничеки скорость не может быть обработки тасок по одному пользователю быстрей 10 в секунду и тогда консюмера будут гулять, хоть сколько их не подымай.
Ну заведи ты 100 очередей и кидай сообщения в них рандомно. Или не рандомно, а по какому-нибудь алгоритму (например, перед диспатчем выбрать менее нагруженную очередь). Каждую очередь запусти в несколько процессов.
Так не прокатит на реббите, я думаю он нагнеться если будет 1 000 000 очередей под каждого юзера
Я говорил про 100 очередей. И нет, не нагнется. У него есть ограничение на количество сообщений в одной очереди, но не на количество очередей. Плюс можно сделать очередь expires. Но как я сказал, лучше юзать бд. Это тупо надёжнее, раз у тебя такие объемы.
Поправка: все зависит от тачки. Если тачка позволяет, кролик будет ее насиловать, пока все не съест.
Приоритет
Обсуждают сегодня