运行

时间:2017-02-18 08:41:54

标签: java apache-camel

我有一个使用石英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();

1 个答案:

答案 0 :(得分:1)

这是预期的,因为Camel路由设置了一次,所以上面的代码只执行一次来设置路由。

所以现在使用LocalDate等的代码应该移动到方法并使用方法调用而不是简单。

或者使用简单日期功能,您可以使用加号和减号date:now+24h:yyyMMdd

添加或移动天数