Всем привет.
Подскажите, пожалуйста, как быть. Есть чат-бот. прилетающий от сервера запрос попадает в очередь, которая запускает обработчик, генерирует ответ, и отправляет пользователю. У пользователя хранится "прогресс", на каком этапе бота он находится.
Проблема в том, что если отправить два сообщения подряд, то может произойти ситуация, когда в очередь встанут две команды, и будут выполнены одновременно.
Первый обработчик получил команду "123", начал обрабатывать её, ещё не дошёл до перезаписи "прогресса", как в то же время второй обработчик начал обрабатывать команду "234". В итоге оба обработали одну и ту же задачу, и задвоили ответ.
Что делать в таком случае?
Думал в самом начале обработки ставить отдельный флаг, что уже есть задача в очереди, и при повторном сообщении откладывать выполнение на несколько секунд, но это костыль какой-то..