Camel Apache:无法使用标头值重命名文件

时间:2014-12-08 15:14:23

标签: apache apache-camel filenames

我的 txt 文件包含一些 ID 。 对于每个ID,我尝试在端点(url)上发出一些 GET 请求,并将响应作为JSON文件获取并将其放入具有每个文件的特定名称的文件夹中

一切都很好,我已经提出了请求,我为每个id获取了JSON文件,我可以将它们放入一个带有动态名称的文件夹中。

但是当我试图用他们的id重命名文件时,像 jsonFile_234 .txt这样的东西就会抛出Camel Exception。

org.apache.camel.component.file.GenericFileOperationFailedException: 无法存储文件:src \ main \ resources \ jsonFromGetReq \ mandatJson_690 .TXT

这就是我的骆驼路线的样子。

<camel:route id="makeRequestForEachId">
    <camel:from uri="file:src/main/resources/idList?noop=true" />

    <camel:split>
        <camel:tokenize token="\n" />
        <camel:to uri="stream:out" />

        <camel:setHeader headerName="CamelHttpMethod">
            <camel:constant>GET</camel:constant>
        </camel:setHeader>

         <camel:setHeader headerName="manId">
            <camel:simple>${body}</camel:simple>
        </camel:setHeader> 

        <camel:recipientList>
            <camel:simple>
                http://examples.com/${header.manId}
            </camel:simple>
        </camel:recipientList>

         <camel:to uri="file:src/main/resources/jsonFromGetReq/?fileName=json_${header.manId}.txt&amp;fileExist=Move&amp;moveExisting=${file:name.noext}_${date:now:MMddyyyy-HH_mm_ss}.txt"></camel:to>

    </camel:split>
</camel:route>

任何人都可以帮助我解决这个问题,而不会有任何例外吗?

1 个答案:

答案 0 :(得分:0)

我找到了问题的根源。 当Camel使用令牌&#34; \ n&#34;进行拆分时,他使我的id看起来像id \ n,当我写$ {header.mandatId}时,此表达式的值为 id \ n < / em>的

该文件的名称如下: json_32(新行 / n )。txt

无法创建此文件,名称中包含新行。

<camel:tokenize token="\r\n" /> 

这解决了我的问题。