我在DB中存储了一个Coupon
实体类,其中的阶段表示为枚举。
这样的事情:
enum CouponStatus {
CREATED,
PUBLISHED,
STARTED,
FINISHED,
RESULTSARRIVED,
POINTSASSIGNED,
MONEYPAID,
CLOSED
}
它还有一个Game
个实体的@ManyToMany列表,每个实体都有一个Date
字段。 Coupon
的状态应根据包含游戏的日期进行更改。
给你一个想法:
根据状态我做了不同的事情:
我看到了3种可能性:
我显然不是第一个遇到此类问题的人。 还有其他方法吗?这类事情的最佳做法是什么?
答案 0 :(得分:1)
听起来#2可能已经足够好了。如果你想要准确的5分钟,#2和#3的组合可能会很方便。
另一种方法可能是在内存中管理状态,例如使用Akka,并将状态与数据库同步。每个优惠券你会有一个演员,如果你需要超出适合一台机器内存的范围,这些可以分布在一个大的Akka集群上。使用这种方法,每个参与者都会安排下一次状态更改发生的时间,并自行管理。您也可以将您的传入请求转到Akka,而不是去数据库。这一切都取决于你的用例。