и менять статус экспаэред заказов. сначала я хотел податься к шедулерам, но как быть с реализацией?
я придумал несколько вариантов - раз в минуту (допустим), чекать в бд заказы нужными статусами. недостаток - раз в минуту, наверное, будет так себе, если время действия заказа 5 минут, то если он попадет в 4.59, то шедулер сменит ему статус почти на минуту позже. решение - можно увеличить частоту запросов.
второй вариант - сохранять заказы (те что в обработке и не истекли) в еще одну таблицу (можно не весь заказ, а только id), которую крутить в шедулере почаще. была еще мимолетная мысль хранить это в мапе или листе, но если приложение упадет, то данные из них пропадут и некоторые заказы останутся без соответствующего статуса.
вообще, еще в голове крутится идея, что неплохо бы иметь такой метод в шедулере, который будет принимать в качестве параметра id и время действия заказа и просто через этот промежуток времени меняет статус. но здесь опять же надо хранить еще одну сущность в бд
я прикидывал так тоже. во время работы хранить в листе, а если приложение упадет, то запускать проверку на наличие таких заказов и помещать их в лист, где их дальше будет шедулер проверять. типа того?
Обсуждают сегодня