除了引导作业和预定作业之外的作业有什么用?

时间:2014-01-27 13:28:19

标签: playframework playframework-1.x

我知道作业对于在应用程序启动时运行方法(Bootstrap Job)以及在方法的周期性间隔(计划作业)中运行方法非常有用。

但乔布斯还有其他用途吗?

我的意思是,如果我想更新数据库中的数据。在这种情况下,我想将代码编写为作业吗?如果是这样,为什么我们这样做?

请指导我。

我正在使用Play 1.2.5。

提前致谢。

1 个答案:

答案 0 :(得分:2)

这些工作有几种用途。他们在官方documentation中得到了很好的解释。我将通过示例用法总结文档。

  • 引导工作
    • 初始化应用程序状态,例如初始database data insertloading Spring context
  • 预定作业
    • 预定的定期任务,例如batch db processingreport generationdaily reports等。
  • 长时间运行的任务(触发任务作业)
    • 如果你有一个长时间运行的任务,并且你不想阻止请求即你想要返回响应,即使任务不是完成,那么这是使用工作的合适案例。
      • 在这种情况下,作业最常与反向ajax(Comet)组合,以便跟踪作业的状态(给出了here的好例子)。
      • 其他例子是data importing with progress status。在这种情况下,您应该使用class来持久化进度状态。
  • 关闭作业
    • 此处的示例是persisting the cache data或其他内存数据releasing some used resources等。

在常规数据库插入中,我不建议使用Job,因为您应该实现复杂的技术以获得结果。正如我之前提到的,如果此任务非常慢并且您希望更快地返回响应,则可以使用作业。此外,当您不想返回数据库操作的状态(这是不好的做法),并且想要更快地返回响应时,您可以使用Job。但是,请注意作业是异步的,并且您必须解决可能的并发问题

Play中有很多用法(一般而言),并且不可能全部覆盖它们,但我希望这个回复对你有帮助。