1

我正在尝试将 Guice (Java)、Quartz 调度程序和 iBatis ( iBaGuice ) 连接在一起以执行以下操作:

  1. 使用启动命令行实用程序扫描程序main()
  2. 定期扫描目录(作为参数提供)以查找包含格式化输出(XML 或 YAML)的文件
  3. 当检测到文件时,解析并输出结果到数据库

问题:

  1. 我用这个例子来连接 Guice 和 Quartz。但是,我遗漏了一些我在评论中询问的重要细节,但这篇文章有些过时了,所以我也在这里引用它:
  1. 如何设置调度程序并不明显。我将在哪里以及如何连接Trigger(我可以使用Trigger#makeMinutelyTrigger)?
  2. 我真的只有一种类型的工作要执行,我知道 JobFactory#newJob 中的细节来自TriggerFiredBundle参数,但是我在哪里/如何连接它?我在哪里/如何创建或连接具体的工作?

PS通过创建和连接ScheduleProvider,我得到了一些进一步的信息。现在,我不知道如何在以下代码段中实际安排作业。似乎我的JobFactory#newJob方法从未被调用

public class CollectorServiceImpl implements CollectorService {
Scheduler scheduler;

/**
 * @throws SchedulerException
 */
@Inject
public CollectorServiceImpl(final SchedulerFactory factory, final GuiceJobFactory jobFactory)
        throws SchedulerException {
    scheduler = factory.getScheduler();
    scheduler.setJobFactory(jobFactory);
}

/**
 * @throws SchedulerException
 * @see teradata.quantum.reporting.collector.service.CollectorService#start()
 */
@Override
public void start() throws SchedulerException {
    Trigger trigger = TriggerUtils.makeMinutelyTrigger("MIN_TRIGGER");
    scheduler.scheduleJob(trigger); // this fails trigger validation since no job name is provided
    scheduler.start();
}

}

4

2 回答 2

2

您问题的核心是,您实际上并没有安排工作课程:

getScheduler().scheduleJob(new JobDetail("myFooJob", null, FooJob.class),
        TriggerUtils.makeMinutelyTrigger("MIN_TRIGGER"));

http://www.codesmell.org/blog/2009/01/quartz-fits/上的完整答案和演示代码

于 2010-04-07T19:56:02.763 回答
0

您真的需要调度,还是只需要以固定的时间间隔执行重复任务?如果是后者,请查看 ExecutorService 中的 java build,尤其是 ScheduledThreadPoolExecutor。为非常简单的事情保存了整个框架:)

于 2010-04-06T19:19:28.000 回答