从这样的工作,我正在做:
@OnApplicationStart
public class Bootstrap extends Job {
Foo foo = new Job<Foo>() {
...
return new Foo();
}.now().get();
}
我发现内部作业永远不会被执行,导致应用程序陷入僵局,因为它会阻塞get()
。
我在开发模式下运行Play 1.2.4。作业提交到JobsPlugins.executor
,初始化为10个主题 - 绰绰有余。我尝试在Job.now()
内的Callable中放置一个断点 - 断点永远不会被击中。
答案 0 :(得分:2)
是的,它得到支持并且效果很好。这样做的原因之一可能是控制作业执行的顺序。
对于我的应用程序,只有 BootstrapJob 使用 @OnApplicationStart 进行注释并控制执行顺序
public void doJob() {
if (User.count() == 0)
Fixtures.loadModels("user-data.yml");
Logger.info("Starting synchronous jobs.");
new StaticDataJob().doJob();
Logger.info("Starting asynchronous jobs.");
new TransactionJob().now();
new ReportJob().now();
Logger.info("Boostrap job complete.");
}