在Play2.1(Java)中运行后台任务的正确方法是什么?
在我的应用程序中,我需要处理上传的文档,并将处理结果放入数据库中。在Play2.1(Java)中运行后台任务的正确方法是什么?,java,playframework-2.0,akka,Java,Playframework 2.0,Akka,在我的应用程序中,我需要处理上传的文档,并将处理结果放入数据库中。 文档存储在文件系统中,元数据存储在数据库中。 对于每个文档,需要从磁盘打开并处理文件,然后相应地更新数据库中的元数据。处理过程可能很昂贵,而且需要很长时间。 我计划做的是: 跨N个任务,一个任务处理单个文档 每个任务都将查找最旧的“未处理”文档 任务将在数据库中将其标记为“进行中”,并开始处理它 处理完文档后,任务将更新元数据,并在数据库中将其标记为“已处理” 之后,任务将转到步骤2 假设applicaton是用Java编写的,
文档存储在文件系统中,元数据存储在数据库中。
对于每个文档,需要从磁盘打开并处理文件,然后相应地更新数据库中的元数据。处理过程可能很昂贵,而且需要很长时间。
我计划做的是:
如果遵循此体系结构,您将把运行后台任务所需的所有信息打包成一条消息,发送给执行此工作的外部参与者,然后可能的话,让该参与者将完成消息发送给另一个参与者,后者将更新数据库 Michael,你显然是对的,但这只是一个原型应用程序,它将在单个JVM实例上运行。我的理解是,这出戏是在使用Akka,而服务请求和我自己的任务——从Akka的角度来看,所有这些都只是由不同的演员执行的任务。所以我在想,即使我问“游戏中的应用程序”,事实上它是“在阿克卡”?对。使用Akka库。Sen消息。让参与者运行后台任务。但是为了简洁的设计,假设演员不在同一台机器上。事实上,为什么不为后台任务参与者启动第二个JVM呢。这有助于您创建一个干净的设计,可以扩展到1000台机器。Michael,您显然是对的,但这只是一个原型应用程序,它将在单个JVM实例上运行。我的理解是,这出戏是在使用Akka,而服务请求和我自己的任务——从Akka的角度来看,所有这些都只是由不同的演员执行的任务。所以我在想,即使我问“游戏中的应用程序”,事实上它是“在阿克卡”?对。使用Akka库。Sen消息。让参与者运行后台任务。但是为了简洁的设计,假设演员不在同一台机器上。事实上,为什么不为后台任务参与者启动第二个JVM呢。这有助于您创建一个干净的设计,可以扩展到1000台机器。