Playframework并发作业管理

时间:2011-12-06 15:38:34

标签: locking playframework jobs concurrency

我想对游戏中的多个并发作业管理提出一些建议:事实上,我在我的应用程序中使用了两个不同的工作:

  • 第一个作业是快速作业:它尝试使用WS.url()方法到达两个不同的URL并将结果状态记录到数据库中。 如果网站没有响应,则进行三次重试。此任务完成时间不到20秒,并且每5分钟运行一次。

  • 第二项工作很慢:如果记录到数据库中的状态正常,它会将内容解析到两个网站。这个过程大约需要2分钟,并且每小时都会完成。

我想确定如果一个作业正在运行,则另一个作业无法升级,并且将等待当前的结束开始。 我对锁的使用和并发访问非常新,所以每个建议对我来说都很珍贵!

2 个答案:

答案 0 :(得分:2)

解决方案是在数据库中保留一些标志(记录状态的位置),以便第二个作业检测它是否可以运行。现在,这将是一个解决方案,但在某些情况下可能会遇到一些问题。

鉴于两个作业都是链接的(一个“ping”一个url,另一个解析它),第一个是非常快的执行,(在你给定的场景中)第一个作业检索的状态与任何人无关除了第二个工作和每小时12次ping一个网址时,你每小时使用一次最新结果似乎是浪费资源(在你的网站和你ping的网站上),我建议将两个任务合并为一个工作

如果您有一份工作,您将不必再担心并发问题了。每小时运行一次。

答案 1 :(得分:2)

如果你想简化你可以在第一个工作中开始第二个工作..

检查服务后的最后一行是

new URLParserJob().now();