运行cron任务时“锁定”数据存储访问

时间:2016-06-01 17:38:31

标签: java google-app-engine jpa cron

我有一个我计划在Google App Engine上部署的应用程序。通过JPA访问数据存储区。我还有一些全天运行的cron任务。我的问题是,有没有办法可以在cron任务运行时基本上阻止访问某些数据存储条目?

假设特定表的数据存储条目是Orders,并且有一个cron任务正在“处理”这些订单。我不希望用户在该任务运行时能够修改订单。

我的第一个想法是让所有实体都实现一个名为locked的简单接口,而cron任务会为它将要处理的所有权限设置锁定值为true,然后在结束,但每次cron运行时都需要大量的数据库更新,而且我确信必须有更高效的方式。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

看看this transaction mechanism。交易提供了保证,即各个实体所需的任何更改都将同步,从而防止潜在的竞争条件。

或者您可以添加"州"订单模型中的属性。谁的价值可以是"处理","待定","交付"等等。然后你的cron可以改变它,你的登录读取它以确保任何人都会能够修改它。