Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 混淆任务队列和Cron作业_Java_Google App Engine - Fatal编程技术网

Java 混淆任务队列和Cron作业

Java 混淆任务队列和Cron作业,java,google-app-engine,Java,Google App Engine,我的数据存储中大约有1000个条目,随着时间的推移,这可能会增加到大约10000个条目。我的任务是更新每一行的某些属性并将其保存回去,此任务必须每24小时执行一次 那么,我应该使用什么呢?在任务队列中,任务必须通过代码手动添加到队列中。如果希望每x时间自动执行此任务,则需要一个cron作业。首先,创建一个每24小时运行一次的cron作业 其次,您需要决定这个cron作业将做什么。最简单的选择是更新所有1000条记录。您可以大批量检索和保存所有实体(即每次调用500个实体)。如果这是一个简单的值更

我的数据存储中大约有1000个条目,随着时间的推移,这可能会增加到大约10000个条目。我的任务是更新每一行的某些属性并将其保存回去,此任务必须每24小时执行一次


那么,我应该使用什么呢?

在任务队列中,任务必须通过代码手动添加到队列中。如果希望每x时间自动执行此任务,则需要一个cron作业。

首先,创建一个每24小时运行一次的cron作业

其次,您需要决定这个cron作业将做什么。最简单的选择是更新所有1000条记录。您可以大批量检索和保存所有实体(即每次调用500个实体)。如果这是一个简单的值更新,只需几秒钟

由于cron作业失败时不会重试,因此更好的选择是创建一个任务并将其添加到队列中。所有更新都将在该任务中发生

注意:确保如果您的任务被重试,它不会弄乱数据。如果不可能,则必须使用某种标志(即上次更新的时间戳)将更新的实体与仍需要更新的实体分开

随着数据集的增长,您的cron作业可以启动多个任务进行更新,例如,每个任务中有1000条记录。

您需要这两项

  • Cron作业,每24小时启动一次批处理更新作业
  • 用于处理您的记录的任务队列

您可以使用来实现这一点。它的开源java库可以用于每24小时调度一次任务。cron正是为了实现这一点,它提供了
每24小时
调度选项。但请记住,与任务队列不同,cron作业在失败后不会重新调度。所以,最可靠的方法是从cron启动任务队列job@IgorArtamonovcron作业有10分钟的时间限制。那么这项任务将在10分钟内完成。比如说,如果我必须更新50000个条目,它会在10分钟内完成吗?@Nayanjain你不必同时更新所有条目。如果使用数据存储,则可以使用游标查询遍历数据。一次执行几千次,并使用光标作为参数重新安排任务,以处理下一批。因此,基本上您将同时使用任务队列和cron作业来完成此任务。另一个选项是从cron作业启动mapreduce。对于调度部分,cron作业是一种可行的方法