我正在开发一个足球经理网站,但我无法弄清楚如何正确使用后台线程插件和Quartz插件(没有太多的文档)。 我的问题是...... 我有一个Match类的Controller,有一个我需要在一段时间内启动的函数。 有石英,我试图创建一个工作,但我不能直接调用该函数(如果我有更多的匹配开始,我应该创建多少工作?)或者我不知道如何做,并使用后台线程我创建了服务类,但后来我不知道如何实现它。 有人可以帮我这个吗? 感谢
修改
此帖中的解决方案:
grails thread -> hibernateException: No Hibernate session bound to thread
答案 0 :(得分:1)
有些时候只需要保持tryng :) 用石英我喜欢这个:
class TestJob {
MatchController match = new MatchController()
static triggers = {
/*
* firstThread runs every minute from 8 to 9:59 on wednsday
*/
cron name: 'firstThread', cronExpression: "0 0/1 8-9 ? * WED"
cron name: 'secondThread', cronExpression: "0 0/5 8-9 ? * WED"
cron name: 'thirdThread', cronExpression: "0 0/10 8-9 ? * WED"
cron name: 'forthThread', cronExpression: "0 0/15 8-9 ? * WED"
}
def group = "MyGroup"
def execute() {
/*
* execute task
* call playMatch from match controller
*/
println "run thread: "
+ String.format('%tH:%<tM:%<tS.%<tL',System.currentTimeMillis())
match.playMatch()
}
}
似乎工作。 但仍然想知道我使用后台线程
答案 1 :(得分:1)
后台线程被设计为一个简单的插件,就像顾名思义一样 - 在后台线程中运行一些代码。
它没有给你一个后台线程的句柄(我记得),所以它只是一个'设置并忘记'类型的东西。
Quartz是您想要做的正确选择。我可能不会让Job调用控制器。 “打一场比赛”的逻辑听起来应该是在服务中。您可以将您的服务注入到Job类中,就像在控制器中一样。
欢呼声
利