Проект на 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 воркеров одновременно работали? Как они из базы будут записи брать и не конфликтовать?