Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel 如何使用标头值动态写入Camel中的不同文件夹?_Apache Camel_Spring Camel - Fatal编程技术网

Apache camel 如何使用标头值动态写入Camel中的不同文件夹?

Apache camel 如何使用标头值动态写入Camel中的不同文件夹?,apache-camel,spring-camel,Apache Camel,Spring Camel,我需要将文件传输到多个目标系统。 这些目标系统在源系统的文件名中定义 例如: SLPNPM_ID0001_T20190329000000.DAT -> target directory : /SLPNPM/ SLPNP1_ID0001_T20190329000001.DAT -> target directory : /SLPNP1/ SLPNP2_ID0002_T20190329000002.DAT -> target directory : /SLPNP2/ ...

我需要将文件传输到多个目标系统。 这些目标系统在源系统的文件名中定义

例如:

SLPNPM_ID0001_T20190329000000.DAT -> target directory : /SLPNPM/
SLPNP1_ID0001_T20190329000001.DAT -> target directory : /SLPNP1/
SLPNP2_ID0002_T20190329000002.DAT -> target directory : /SLPNP2/
...                                   ...
所以,我实现了下面的代码

CamelContext.xml

    <route id="_route1">
      <from id="_from1" uri="direct:source"/>
      <bean id="_setTarget" ref="setTarget"/>
      <to id="_to1" uri="file:C:/{${header.targetNeId}}/outputFolder"/>
    </route>
    <bean id="setTarget" class="com.ktds.openmzn.sample.SetTarget"/>
错误日志

Caused by: java.lang.IllegalArgumentException: Invalid directory: C:/{${header.targetNeId}}/outputFolder. Dynamic expressions with ${ } placeholders is not allowed. Use the fileName option to set the dynamic expression.
at org.apache.camel.component.file.FileComponent.buildFileEndpoint(FileComponent.java:57) ~[camel-core-2.23.1.jar:2.23.1]
at org.apache.camel.component.file.GenericFileComponent.createEndpoint(GenericFileComponent.java:56) ~[camel-core-2.23.1.jar:2.23.1]
at org.apache.camel.component.file.GenericFileComponent.createEndpoint(GenericFileComponent.java:38) ~[camel-core-2.23.1.jar:2.23.1]
at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:126) ~[camel-core-2.23.1.jar:2.23.1]
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:706) ~[camel-core-2.23.1.jar:2.23.1]
... 39 common frames omitted

如果我想满足我的业务需求,我该如何处理它?

您是如何将文件导入到这条路径的?它们是否按顺序发送到此路由(例如,扫描源目录的拆分器正在将这些文件发送到此路由)?我找到了它。谢谢,你是怎么把文件送到那条路线的?它们是否按顺序发送到此路由(例如,扫描源目录的拆分器正在将这些文件发送到此路由)?我找到了它。非常感谢。
Caused by: java.lang.IllegalArgumentException: Invalid directory: C:/{${header.targetNeId}}/outputFolder. Dynamic expressions with ${ } placeholders is not allowed. Use the fileName option to set the dynamic expression.
at org.apache.camel.component.file.FileComponent.buildFileEndpoint(FileComponent.java:57) ~[camel-core-2.23.1.jar:2.23.1]
at org.apache.camel.component.file.GenericFileComponent.createEndpoint(GenericFileComponent.java:56) ~[camel-core-2.23.1.jar:2.23.1]
at org.apache.camel.component.file.GenericFileComponent.createEndpoint(GenericFileComponent.java:38) ~[camel-core-2.23.1.jar:2.23.1]
at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:126) ~[camel-core-2.23.1.jar:2.23.1]
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:706) ~[camel-core-2.23.1.jar:2.23.1]
... 39 common frames omitted