gpt4 book ai didi

java - 将流缓存与 Apache Camel 一起使用

转载 作者:行者123 更新时间:2023-11-30 08:43:34 28 4
gpt4 key购买 nike

我在下面的这个例子中使用了流缓存。

我有 3 条路线。

首先,我使用带有标记“\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>

然后我做了一个业务流程:

    <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();
}

我想在此过程中获取整个文件(ProcessStreamCaching)。

如何正确使用流缓存?

拆分前的文件包含:

XXXXX
YYYYY
ZZZZZ
AAAAAAAAAAAAA
BBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
SSSSSSSSSSSSSSSS
SSQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
Z

我认为流缓存能够将文件的所有行放入缓存中,并且我可以检索这些行。

如何查看缓存中的内容?

我想当我添加 streamCache="true"在这条路线上<route id="SPLIT-FLOW" > ,拆分器的每一行都将放在缓存中。 (或者可能是整个文件)

在最后一道工序ProcessStreamCaching ,如果我想重新加载 inputStream从一开始,但在这个过程中我不能,因为我已经阅读了 inputStream .

我想继续读取每行流线的文件,但在处理过程中我需要读取例如第一行,这就是为什么我想使用流缓存,它允许我从开始。

可能是我误解了流缓存。

最佳答案

如果你想对一个流进行两次(或更多次)解析,你可以先将其转换为String,然后根据需要多次解析。

请在此处查看类似问题:Exchange.getIn().getBody() returns empty string in camel on second call

关于java - 将流缓存与 Apache Camel 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34176099/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com