异步作业是否已从 Play 框架中移除?什么是更好的选择?
Was asynchronous jobs removed from the Play framework? What is a better alternative?
我想使用 Job
这样我就可以在申请开始时将它们踢掉。现在好像已经完全从 Play 中删除了?
我看到一些示例,人们创建了 Global
class,但不完全确定 if/how 我应该用它来替换 Job
。
有什么建议吗?
编辑:如果你要投反对票,请给出理由。也许我在问题中遗漏了一些东西,也许这不属于这里。至少有些东西...
工作 class 已在 Play 2.0 中删除。
根据您的 Play 版本以及您是否需要异步,您有一些选择:
Akka 演员
对于自 Play 2.0 以来的所有版本,您可以使用 Akka Actors 安排一次异步 task/actor 并在启动时通过 Play Global
class.
执行它
public class Global extends GlobalSettings {
@Override
public void onStart(Application app) {
Akka.system().scheduler().scheduleOnce(
Duration.create(10, TimeUnit.MILLISECONDS),
new Runnable() {
public void run() {
// Do startup stuff here
initializationTask();
}
},
Akka.system().dispatcher()
);
}
}
有关详细信息,请参阅 https://www.playframework.com/documentation/2.3.x/JavaAkka。
热切的单身人士
从 Play 2.4 开始,您可以使用 Guice 快速绑定单例
import com.google.inject.AbstractModule;
import com.google.inject.name.Names;
public class StartupConfigurationModule extends AbstractModule {
protected void configure() {
bind(StartupConfiguration.class)
.to(StartupConfigurationImpl.class)
.asEagerSingleton();
}
}
StartupConfigurationImpl
会在默认构造函数中完成它的工作。
@Singleton
public class StartupConfigurationImpl implements StartupConfiguration {
@Inject
private Logger log;
public StartupConfigurationImpl() {
init();
}
public void init(){
log.info("init");
}
}
见https://www.playframework.com/documentation/2.4.x/JavaDependencyInjection#Eager-bindings
我想使用 Job
这样我就可以在申请开始时将它们踢掉。现在好像已经完全从 Play 中删除了?
我看到一些示例,人们创建了 Global
class,但不完全确定 if/how 我应该用它来替换 Job
。
有什么建议吗?
编辑:如果你要投反对票,请给出理由。也许我在问题中遗漏了一些东西,也许这不属于这里。至少有些东西...
工作 class 已在 Play 2.0 中删除。
根据您的 Play 版本以及您是否需要异步,您有一些选择:
Akka 演员
对于自 Play 2.0 以来的所有版本,您可以使用 Akka Actors 安排一次异步 task/actor 并在启动时通过 Play Global
class.
public class Global extends GlobalSettings {
@Override
public void onStart(Application app) {
Akka.system().scheduler().scheduleOnce(
Duration.create(10, TimeUnit.MILLISECONDS),
new Runnable() {
public void run() {
// Do startup stuff here
initializationTask();
}
},
Akka.system().dispatcher()
);
}
}
有关详细信息,请参阅 https://www.playframework.com/documentation/2.3.x/JavaAkka。
热切的单身人士
从 Play 2.4 开始,您可以使用 Guice 快速绑定单例
import com.google.inject.AbstractModule;
import com.google.inject.name.Names;
public class StartupConfigurationModule extends AbstractModule {
protected void configure() {
bind(StartupConfiguration.class)
.to(StartupConfigurationImpl.class)
.asEagerSingleton();
}
}
StartupConfigurationImpl
会在默认构造函数中完成它的工作。
@Singleton
public class StartupConfigurationImpl implements StartupConfiguration {
@Inject
private Logger log;
public StartupConfigurationImpl() {
init();
}
public void init(){
log.info("init");
}
}
见https://www.playframework.com/documentation/2.4.x/JavaDependencyInjection#Eager-bindings