【发布时间】:2019-08-31 10:57:16
【问题描述】:
我正在开发一个 Web 应用程序,用户在其中添加问题,指定他/她应该收到通知邮件的日期和时间。我是 apache 骆驼和石英调度程序的新手。
我编写了如下示例代码。 IssueDTO 只不过是一个 POJO。如果问题是重复的,我已经配置了一个正常工作的 cron 调度程序,即如果我将频率指定为 5,我会得到预期的输出,即控制台的 println 语句。但如果问题不是重复的,我使用了 SimpleScheduledRoutePolicy 并硬编码了处理器的 process() 方法应该运行的日期和时间。我只是将日期时间更改为当前系统时间的 2 分钟后,以检查代码是否正常工作。但它永远不会进入 process 方法并打印此语句 => System.out.println("*******************" + issueDTO.getIssueId() + " running at " + gc.getTime().toString());
@Override
public void configure() throws Exception
{
System.out.println("in ReminderRouteBuilder configure()");
System.out.println("Issue ID : " + issueDTO.getIssueId());
System.out.println("Issue Frequency : " + issueDTO.getFrequency());
System.out.println("Is Repetative : " + issueDTO.getIsRepetitive());
// if Repetitive
if (StringUtil.getBoolean(issueDTO.getIsRepetitive()))
{
String fromString = "quartz2://" + issueDTO.getIssueId() + "?cron=0/" + issueDTO.getFrequency() + "+*+*+*+*+?";
from(fromString).process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception
{
System.out.println(issueDTO.getIssueId() + " running every " + issueDTO.getFrequency() + " sec...");
}
});
}
// if not Repetitive
else
{
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
GregorianCalendar gc = new GregorianCalendar(2019, Calendar.AUGUST, 31, 13, 45);
policy.setRouteStartDate(gc.getTime());
from("direct:start").routeId(issueDTO.getIssueId()).routePolicy(policy).process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception
{
System.out.println("*****************" + issueDTO.getIssueId() + " running at " + gc.getTime().toString());
}
});
}
}
我错过了什么吗?
【问题讨论】:
标签: apache-camel quartz-scheduler