Java 在apachecamel中使用流缓存

Java 在apachecamel中使用流缓存,java,caching,apache-camel,Java,Caching,Apache Camel,我在下面的示例中使用流缓存 我有三条路线 首先,我使用带有标记“\n”的拆分流,读取按行拆分的文件 <route id="SPLIT-FLOW" streamCache="true"> <from uri="file:src/data/forSplitCaching?noop=true"/> <split streaming="true"> <tokenize token="\n"/>

我在下面的示例中使用流缓存

我有三条路线

首先,我使用带有标记“\n”的拆分流,读取按行拆分的文件

     <route id="SPLIT-FLOW" streamCache="true">
        <from uri="file:src/data/forSplitCaching?noop=true"/>
        <split streaming="true">
            <tokenize token="\n"/>
            <to uri="direct:PROCESS-BUSINESS"/>
        </split>
    </route>
我认为流缓存能够将文件的所有行放在缓存中,我可以检索这些行

如何查看缓存中的内容

我想当我在这个路径上添加
streamCache=“true”
时,拆分器的每一行都将被放置在缓存上。(或可能是整个文件)

在上一个进程
ProcessStreamCaching
,如果我想从头重新加载
inputStream
,但是在这个进程中我不能,因为我已经读取了
inputStream

我想继续以每行流的方式读取文件,但在运行过程中,我需要读取第一行示例,这就是为什么我想使用流缓存,它允许我从一开始就浏览文件


可能是我误解了流缓存。

如果您想对流进行两次(或更多次)解析,可以在解析之前将其转换为字符串,并根据需要对其进行多次解析


请检查此处的类似问题:

更多次使用流并不是目的,因为流缓存能够重新加载流,我不知道如何使用它@SergeyDo您是否有流缓存的示例,请在其中存储一些日期,然后检索它。thxsMy的答案不是如何使用流缓存,而是它为您的问题提供了另一种解决方案(…从一开始浏览文件)。但是,如果您喜欢使用流缓存,只需查看中的文档,我无法将文件大小大于1的文件转换为字符串,这就是我想使用流缓存的原因,我已经查看了文档,不幸的是,我发现了如何实现流缓存,而不是如何使用它并检查流缓存的数据。如果您多次尝试解析GBs的数据,我很确定流缓存也不会工作。考虑使用DB或搜索引擎
    <route id="PROCESS-BUSINESS" streamCache="true">
        <from uri="direct:PROCESS-BUSINESS"/>
        <bean ref="ProcessBusiness" method="dealRecord"/>
        <to uri="direct:STREAM-CACHING"/>
    </route>

    public class ProcessBusiness {

     public String dealRecord(@Body String body){
     System.out.println(body);
     return body;
}
    <route id="STREAM-CACHING">
        <from uri="direct:STREAM-CACHING"/>
        <bean ref="ProcessStreamCaching" method="usingStream"/>
        <setHeader headerName="CamelFileName">
            <simple>${header.CamelFileName}.${header.CamelSplitIndex}   </simple>
        </setHeader>
        <to uri="file:src/out"/>
    </route>

   public class ProcessStreamCaching {

     public String usingStream(Exchange exchange){
     Object o = exchange.getIn().getBody(StreamCache.class);
     return  o.toString();
    }
XXXXX
YYYYY
ZZZZZ
AAAAAAAAAAAAA
BBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
SSSSSSSSSSSSSSSS
SSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
Z