Какие есть варианты раздачи сообщений пользователям?
Здравствуйте, делаю сервис по обмену лайками.
Пользователь сервиса может создать задание "поставить тут 10 лайков". Другие пользователи должны иметь возможность запросить доступные задания, где в ответе будет "поставить тут лайк".
После выполнения задания пользователь отправляет запрос на то что он выполнил задание.
Нужно что б не выполнили задание больше чем нужно.
Я придумал такую модель.
1) приходит задание "поставить тут 10 лайков"
2) сервер создаёт в очереди 10 заданий "поставить тут лайк"
3) пользователь делает запрос "дай задание" - по истории проверяем что он не делал это задание и даём ему задание из очереди, а в очереди его прячем, дабы другие его снова не взяли.
4) когда пользователь закончит задание он отправляет запрос на то что он сделал его и после проверки задание из очереди удаляется.
Если он его не выполнили то задание в очередь возвращаем.
По сути идеально подходит сервис бас, но у него нет метода "Read" есть только подписка на событие получения сообщения, а для API это не подходит, что можно придумать?
Очень не хочется делать все это в базе ибо задач будет много и управлять стейтами довольно трудная задача.
Вроде несложная бизнес-логика. А в чём проблема с состоянием задач? Их всего два, по сути: выполняется и выполнено. С каждым проверенным лайком у задачи сохраняется прогресс в бд. Когда прогресс равен 100%, то закрываем задачу.