【问题标题】:Camel Apache: Cannot rename file with header valueCamel Apache:无法使用标头值重命名文件
【发布时间】:2014-12-09 22:30:07
【问题描述】:

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

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

但是当我试图用它们的 id 重命名文件时,像 jsonFile_234.txt 之类的东西会抛出骆驼异常。

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>

谁能帮我解决这个问题而不会出现更多异常?

【问题讨论】:

  • 可能您没有权限将文件写入此文件夹。
  • 当我试图重命名该文件而不是使用 header.manId 时,假设 ${header.CamelHttpMethod} 或 ${header.CamelSplitIndex} 一切都很愉快。

标签: apache apache-camel filenames


【解决方案1】:

我找到了问题的根源。 当 Camel 使用标记“\n”进行拆分时,他让我的 id 看起来像 id\n,当我写 ${header.mandatId} 时,这个表达式的值是 id\n

并且该文件将具有如下名称: json_32(换行 /n).txt

而且这个文件名换行,无法创建。

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

这解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2015-03-12
    • 1970-01-01
    • 2013-08-31
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多