dzheka3d
@dzheka3d

Как обрабатывать задачи группами?

Всем привет! Я только начал изучать RabbitMq и многого не понимаю, поэтому прошу не пинать.
Допустим, у меня есть 100тыс пользователей, которым нужно отправить push уведомления, например, когда добавилась какое-то событие, ну пост добавился в конце концов (просто для примера).
И вот, в систему залетает пост, значит мне нужно добавить в очередь задачу, которая отправит 100тыс push сообщений пользователям. Но push сообщения можно отправлять только по 1тыс штук за раз. Значит мне нужно 100 раз выполнить одно и то же задание. И тут у меня проблема:
Если я отправлю в очередь 'send_push' сообщение '{post_id: 123}': , его получит консьюмер, выберет из БД 1тыс пользователей, сгенерирует push уведомление, отправит в Google Cloud Messages, сохранит где-то на диске последнего обработанного пользователя (чтобы с него начать отправлять следующую партию push) и вот все... На этом очередь очистится.
Как мне заставить очередь запускаться до тех пор, пока она не отправит push всем пользователям?
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 2
sarapinit
@sarapinit
Точу водой камень
Например, кладите в очередь не одно сообщение, а сообщение на задание. То есть в сообщении будет post_id и список user_ids, в котором будет 1000 айдишников.
Получится 100 сообщений, будете их по одному разгребать.
Ответ написан
2ord
@2ord
Если я отправлю в очередь 'send_push' сообщение '{post_id: 123}': , его получит консьюмер, выберет из БД 1тыс пользователей
А что мешает консьюмеру брать из БД по 1000 в цикле?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы