@AKLZephyr

Как параллельно отправить несколько миллионов сообщений?

Проект на laravel, postgres, redis queue.

В бд лежит 10 миллионов строк. Нужно отфильтровать их по условиям и отправить им сообщения.
Текущая реализация:
function handle() {
Users::query()->chunk(100, function($users) {
  $filterUsers = $this->filter($users);
  
  foreach ($users as $user) {
     $this->sendToUser($user, 'message');
     // помечаем в бд что отправили
  }
});
}

function filter($users) {
 // опращаемся на врешний апи за инфой по юзерам
 // фильтруем их по условиям из нашей бд
 return $filterUsers;
}

Примерно такая логика сейчас.

Обрабатывает один воркер это все - что очень долго. Как сделать чтобы к примеру 50 воркеров одновременно работали? Как они из базы будут записи брать и не конфликтовать?
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

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