我们正在从Apache Camel 2.12升级到2.16.4,并遇到其中一条路由的问题。
Caused by: java.lang.IllegalArgumentException: Missing ${ from the text: file:C:\OnDemandOutput?fileName=RPFPos_L2W.$simple{in.header.accountNum}-${date:now:yyyyMMddHHmmssSSS}.csv
<camelContext xmlns="http://camel.apache.org/schema/spring">
<propertyPlaceholder id="ignoreId" location="classpath:reformMB.properties"
prefixToken="${" suffixToken="}"/>
<route id="sendNotification">
<from uri="jms:queue:queue.sendNotification"/>
<to uri="file:${OnDemand.output.url}?fileName=RPFPos_L2W.$simple{in.header.accountNum}-${date:now:yyyyMMddHHmmssSSS}.csv"/>
</route>
</camelContext>
根据文档,这应该有效。有人可以帮助我了解问题在哪里吗?
根据official documentation,应该可以使用$simple{...}
来引用骆驼的属性,如下所示:
使用Camels简单语言与Spring物业占位符冲突
使用Spring桥接占位符时要注意,然后spring $ {}语法与Camel中的Simple冲突,因此要小心。
示例:
<setHeader headerName="Exchange.FILE_NAME"> <simple>{{file.rootdir}}/${in.header.CamelFileName}</simple> </setHeader>
与Spring属性占位符冲突,您应该使用
$simple{}
来指示在驼峰中使用简单语言。<setHeader headerName="Exchange.FILE_NAME"> <simple>{{file.rootdir}}/$simple{in.header.CamelFileName}</simple </setHeader>