在我的应用程序中,我需要处理上传的文档并将处理结果放在数据库中。
文档存储在文件系统中,元数据存储在数据库中。
对于每个文档,需要打开并处理来自磁盘的文件,而不是相应地更新数据库中的元数据。处理可能是昂贵的并且需要很长时间。
我打算做的是:在Play 2.1(Java)中运行后台任务的正确方法是什么?
- 跨度N个任务,一个任务来处理一个文档
- 每个任务将去寻找最古老的,“未处理”文件
- 任务将其标记为”进取”的数据库,并开始处理它
- 文档处理任务后,将更新元数据,并在数据库将其标记为‘已处理’
- 任务会是
假设应用程序是用Java编写的,而不是Scala,那么实现这个杠杆化Play和Akka的正确/最简单的方法是什么?源代码示例也将受到赞赏。
Michael,你显然是对的,但这只是一个原型应用程序,它将运行在单个JVM实例上。我的理解是,Play使用Akka,并提供服务请求和我自己的任务 - 所有这些只是来自Akka视角的不同演员执行的任务。所以我甚至在想,“在Play应用程序中”实际上是“在Akka”中? – 2013-05-05 07:20:15
对。使用Akka库。 Sen消息。让演员执行后台任务。但为了简洁的设计,假设演员不会在同一台机器上。实际上,为什么不为后台任务执行者启动第二个JVM。这可以帮助您创建一个可以扩展到1000台机器的干净设计。 – 2013-05-05 08:52:47