我需要生成一个介于1000到3000之间的序列号。每天的午夜12点,此序列应重置为1000,并且对于每个请求,该序列号都应递增。有什么方法可以实现这一目标。我需要在使用Spring Boot和MongoDB的Web应用程序之一中实现。
我知道在Java中我们无法实现,因为我的应用程序将作为多个实例运行,并且将部署在Cloud docker容器中。
答案 0 :(得分:1)
1)要生成序列号,可以将序列值存储在Mongo文档中,并使用findAndModify操作每次对其进行递增。您可能要使用返回修改后的文档的选项来获取最新值。 https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/
2)要在午夜重置该值,可以使用Spring Boot调度。您可以使用@Scheduled注释将重置mongo文档中值的方法,并指定要在确切时间运行的cron表达式。
由于序列实际上存储在数据库中,因此您的应用程序的多个实例应该不会出现问题。