【问题标题】:Grails background-thread, QuartzGrails 后台线程,Quartz
【发布时间】:2013-08-15 07:09:12
【问题描述】:

我正在开发一个足球经理网站,但我不知道如何正确使用 background-thread 插件和 Quartz 插件(没有太多文档)。 我的问题是.. 我有一个 Match 类的控制器,它具有我需要在某个时间启动的功能。 使用石英我试图创建一个工作,但我不能直接调用该函数(如果我有更多的匹配开始,我应该创建多少工作?)或者我不知道该怎么做,并且使用后台线程我创建了服务类,但我不知道如何实现它。 有人可以帮我吗? 谢谢

编辑:

本帖中的解决方案:

grails thread -> hibernateException: No Hibernate session bound to thread

【问题讨论】:

    标签: grails


    【解决方案1】:

    Background-thread 被设计成一个简单的插件,顾名思义——在后台线程中运行一些代码。

    它没有给你后台线程的句柄(我记得),所以它只是一种“设置并忘记”类型的东西。

    Quartz 是您想做的事情的正确选择。不过,我可能不会让 Job 调用控制器。 “打一场比赛”的逻辑听起来应该是在服务中。您可以像在控制器中一样将服务注入到 Job 类中。

    干杯

    【讨论】:

    • 你说得对,服务要好得多,我没想到,尤其是当你需要在不同的控制器中调用一个函数时。
    • 服务可能不应该调用控制器上的函数。控制器旨在处理来自传入 http 请求的不同操作。如果您的服务“需要”调用控制器操作,您可能需要考虑重新设计该代码。也许将代码从控制器中拉出并进入新服务;那么控制器和任何其他服务都可以调用它。
    • 现在我正在做的例子是:League 类调用保存,一个 LeagueService 具有生成我需要的所有 leauges 的方法。我做得对吗?
    • 这是我的想法如何使用石英stackoverflow.com/questions/4042492/grails-quartz-thread,但我不知道如何在服务中创建线程,不断获取 ExceptionPrinterJobListener 并且找不到匹配的构造函数:java.lang.Thread (fproject.Match)
    【解决方案2】:

    有些时候只需要不断尝试 :) 使用石英,我喜欢这样:

    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()
        }
    }
    

    似乎有效。 但还是想知道我要使用后台线程

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多