【问题标题】:Camel: "file" component, but only pass file name as bodyCamel:“文件”组件,但仅将文件名作为正文传递
【发布时间】:2012-02-21 19:46:35
【问题描述】:

我正在尝试使用 Camel 处理潜在的大文件,并且担心它们“适合”在 Camel Message 的主体中。有没有一种方法可以将文件的名称(路径)作为消息的主体传递,然后在处理器中使用它从磁盘读取?

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    你可以只传入一个 java.io.File 实例。这本质上是 Camel 文件组件自己做的事情(尽管它放置在 WrappedFile 中,因为与 ftp 组件共享代码)。

    您当然也可以将文件名存储为字符串,然后从处理器访问该文件,或者通过

    String name = exchange.getIn().getBody(String.class);
    File file = new File(name);
    ...
    FileInputStream fis = new FileInputStream(file);
    // read the file from the stream, etc.
    

    【讨论】:

    • 让我看看我是否理解正确。 Camel在使用它时将文件的内容加载到消息中,而是传递File(包装在WrappedFile中)对象?而当我以byte[] (exchange.getIn().getBody(byte[].class)) 的形式请求正文时,那么它会加载正文吗?
    • 是的,这是正确的。文件内容按需加载。
    猜你喜欢
    • 2011-07-06
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    相关资源
    最近更新 更多