【问题标题】:How to initiate a job on loading a page in grails using quartz如何使用石英启动在 grails 中加载页面的作业
【发布时间】:2012-01-09 11:36:22
【问题描述】:

我正在开发一个网络应用程序......我想在触发动作后立即触发工作。如何才能做到这一点 。我正在使用石英插件进行调度。

以及我们如何将数据从作业传递到控制器的操作..

【问题讨论】:

    标签: grails controller action quartz-scheduler scheduling


    【解决方案1】:

    Quartz 用于触发需要定期运行的作业,因此对于需要在加载页面时运行的代码来说并不合适。

    如果您希望在调用控制器操作时运行某些代码,只需将其放入操作中!

    我们如何将数据从作业传递到控制器的操作。

    这听起来像是一个设计缺陷。作业应该永远不需要调用控制器操作,我什至不确定它是否可能。

    【讨论】:

    • 好答案。也许他想要运行该作业,因为它包含他想要执行的代码?在这种情况下,他应该将该代码分解为可由控制器或作业调用的服务。
    • 只是重申 erturne 的回答。最佳实践是将要执行的代码放入石英作业将调用的服务中。如果您需要从控制器执行此操作,只需将服务导入控制器并调用相同的方法即可。这也使您的代码干燥。
    【解决方案2】:

    如果您的要求是在后台按需执行作业,除了按计划执行之外,Quartz 将允许您执行此操作。在您的控制器或服务中,您只需执行 MyJob.triggerNow(params) 其中 params 是作业的任何参数的映射。

    triggerNow() 的返回类型是null,因此没有简单的方法从触发器中获取返回值。

    如果您不需要在后台执行代码,则应将 Job 重构为调用一个服务方法,然后可以从您的控制器操作中调用该方法,就像 Don 所说的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      相关资源
      最近更新 更多