我想使用“计时器”组件按移动日期范围轮询(从中选择)数据库表。
我想知道是否可以(以某种方式)使用“ firedTime”属性来执行此操作...
使用时:
exchange.getIn().getHeader("firedTime",String.class)
...在我的select语句的“ where”子句中建立和设置日期范围值。
是否有可能(或建议)获取“ firedTime”值,执行必要的日期算术并在“ Processor”内部构建select语句。然后,使用我新建的SQL字符串在处理器中设置新的Exchange标头属性,以转发到路由?
有点像...
from("timer://theTimerName?fixedRate=true&period=10000")
.process(new Processor() {
public void process(Exchange msg) throws Exception {
//get "firedTime" property and use to build startTime and endTime values...
//build select statement with date range
// e.g.,// String pollingSql = "select * from myTable where updateTimestamp between '<startTime>' and '<endTime>'";
//add "pollingSql" to a header property in exchange(?)
}
})
.toD(pollingSql)//(query)
.split(body())
.convertBodyTo(java.lang.String.class,"UTF-8")
尝试这种方法没有成功(相同的值似乎仍然存在,因此数据范围没有及时扩大)
本质上,想知道这是否可能。
-或者,是否存在一种更好的,更可接受的,具有移动日期范围(或“时间框”)的轮询方法
thx