在Apache Camel的file://端点的fileName参数中是否可以有条件表达式?
我正在使用Java DSL(无法更改)来构建路由,并且以下定义似乎不起作用
myroute.to("file://my-file-out?fileName=${header[myheader] eq 'EXPECTED_VALUE' ? 'EXPECTED' : 'UNEXPECTED'}")
不幸的是,由于我使用的是预定义的(自定义)应用程序框架,因此必须在单个.to()方法调用中完成此操作。
答案 0 :(得分:1)
您可以这样做
myroute
.choice()
.when(header("myHeader").isEqualTo("EXPECTED_VALUE"))
.to("file://my-file-out?fileName=EXPECTED_VALUE")
.otherwise()
.to("file://my-file-out?fileName=UNEXPECTED")
.endChoice();
另一种略有不同的方法
myroute
.choice()
.when(header("myHeader").isEqualTo("EXPECTED_VALUE"))
.setHeader("finalFileName", simple("EXPECTED_VALUE"))
.otherwise()
.setHeader("finalFileName", simple("UNEXPECTED"))
.endChoice()
.to("file:///tmp?fileName=${header.finalFileName}")
.end()
;
答案 1 :(得分:0)
filenname值可以引用标题或属性,而标题或属性又可以是表达式。我以前没有尝试过,但也许公式可以使用任何可用的表达语言,例如Groovy。这是您所能解决的问题吗?