gpt4 book ai didi

java - 如何在 play framework 2.3 中编写 cron 作业

转载 作者:IT老高 更新时间:2023-10-28 13:25:49 30 4
gpt4 key购买 nike

我正在使用 Play 2.3.8(activator) 和 Mongodb 作为数据库

我在产品集合中有一些产品,每个产品都有有效期,一旦过期
我需要删除产品集合中的文档。

我正计划编写 cron 作业来删除产品集合中的文档,这些文档将在特定时间每天运行一次。

我想我可以在 java 中使用 @on、@Every 之类的注解(我在 play java 中编写代码,而不是 play scala)。但是当我用谷歌搜索时,我得到了一些插件、工具或解决方案

a) https://github.com/ssachtleben/play-plugins/tree/master/cron

b) Quartz Job schedular 作为 Play 2.3(activator) 的依赖项

c) Akka 异步作业(我不知道如何使用它,不知道如何参与游戏,甚至我是 Akka 的新手)

我处于困惑状态,请您建议我关注

  1. 我可以使用哪一种来满足我的要求?

  2. 我的工作是否正确?

  3. 有什么可以在数据库级别完成我的工作吗?提前致谢。

最佳答案

这可以使用全局类来完成,并且可以通过 onstart 方法完成。 https://www.playframework.com/documentation/2.5.x/JavaGlobal

下面给出了编码的抽象 View 。希望对您有所帮助

public class Global extends GlobalSettings {

private Cancellable scheduler;

@Override
public void onStart(Application application) {
int timeDelayFromAppStartToLogFirstLogInMs = 0;
int timeGapBetweenMemoryLogsInMinutes = 10;
scheduler = Akka.system().scheduler().schedule(Duration.create(timeDelayFromAppStartToLogFirstLogInMs, TimeUnit.MILLISECONDS),
Duration.create(timeGapBetweenMemoryLogsInMinutes, TimeUnit.MINUTES),
new Runnable() {
@Override
public void run() {
System.out.println("Cron Job");
// Call a function (to print JVM stats)
}
},
Akka.system().dispatcher());
super.onStart(application);
}

@Override
public void onStop(Application app) {
scheduler.cancel();
super.onStop(app);
}

}

关于java - 如何在 play framework 2.3 中编写 cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32178713/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com