我有一个使用石英cron语句运行的Camel 2.18.2应用程序,每天凌晨4点。
我的路由从SQL作为有效负载收集到我的路由,然后将当前日期,昨天日期和明天日期存储为标题,并调用速度端点以生成具有这些日期和有效负载的文件。
据我所知,文件每天都会填充新值但日期未评估,它们与首次运行时相同。
如何在每次运行中评估日期?
from("{{camm.quartz}}")
.routeId("CAM")
.autoStartup("{{camm.startup}}")
.log("Consuming positions view")
.to(fromStr)
.bean((Processor) exchange -> {
final List<Map<String, Object>> body = exchange.getIn().getBody(List.class);
List<String> myList = new ArrayList<>();
for (Map<String, Object> row : body) {
for (Map.Entry<String, Object> entry : row.entrySet()) {
myList.add((String) entry.getValue());
}
}
exchange.getOut().setBody(myList);
})
.multicast()
.stopOnException()
.parallelProcessing()
.to("direct:a", "direct:b")
.end();
//First we create all actions
from("direct:a")
.routeId("Creating CAMM Request file")
.autoStartup("{{camm.startup}}")
.setHeader("replyFileName", constant("{{camm.bloomberg.response.file}}"))
.setHeader("dateFrom", simple(LocalDate.now().plusDays(1).format(formatter)))
.setHeader("dateTo", simple(LocalDate.now().plusDays(1).format(formatter)))
.setHeader("actionsDate", constant("effective"))
.to("velocity:velocity/cam/camm.vm?contentCache=false")
.to("{{camm.bloomberg.outgoing}}?fileName={{camm.bloomberg.request.file}}")
.log("Bloomberg Request File: {{camm.bloomberg.response.file}} created")
.end();
//create updates
from("direct:b")
.routeId("Creating CAMM Updates file")
.autoStartup("{{camm.startup}}")
.setHeader("replyFileName", constant("{{camm.bloomberg.response.file.updates}}"))
.setHeader("dateFrom", simple(LocalDate.now().minusDays(1).format(formatter)))
.setHeader("dateTo", simple(LocalDate.now().format(formatter)))
.setHeader("actionsDate", constant("entry"))
.to("velocity:velocity/cam/camm.vm?contentCache=false")
.to("{{camm.bloomberg.outgoing}}?fileName={{camm.bloomberg.request.file.updates}}")
.log("Bloomberg Updates File: {{camm.bloomberg.response.file.updates}} created")
.end();
答案 0 :(得分:1)
这是预期的,因为Camel路由设置了一次,所以上面的代码只执行一次来设置路由。
所以现在使用LocalDate等的代码应该移动到方法并使用方法调用而不是简单。
或者使用简单日期功能,您可以使用加号和减号date:now+24h:yyyMMdd