gpt4 book ai didi

java - Camel 简单表达式在运行之间不进行计算

转载 作者:行者123 更新时间:2023-12-01 08:52:16 25 4
gpt4 key购买 nike

我有一个 Camel 2.18.2 应用程序,每天凌晨 4 点使用quartz cron 语句运行。

我的路线从 SQL 收集作为我的路线的有效负载,然后将当前日期、昨天的日期和明天的日期存储为 header ,并调用速度端点来生成包含这些日期和有效负载的文件。

据我所知,文件每天都会填充新值但是日期不会被评估,它们与第一次运行时的日期相同。

如何完成每次运行时评估日期?

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();

最佳答案

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

因此,现在使用 LocalDate 等的代码应该移至方法并使用方法调用,而不是简单的。

或者使用简单的日期函数,您可以使用加号和减号添加或移动日期date:now+24h:yyyMMdd

关于java - Camel 简单表达式在运行之间不进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42313016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com