我正在使用Camel 2.18和Java8。下面是一些带有路由的代码。我将此类JSON发布到此服务:
{
"bigField": "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest",
"smallField": "234"
}
问题是bigField很大,可以为256MB。那就是为什么我想到在Camel中进行流缓存:http://camel.apache.org/stream-caching.html不知道是否可以在场景中应用它?我了解的是,这种机制应该一点一点地将流存储在磁盘上吗?我创建了/ tmp / cachedir目录,那里什么也没有出现。我正在发送5MB的请求。
我缺少什么?
@SpringBootApplication
public class Application extends RouteBuilder {
@Override
public void configure() throws Exception {
setupStreamCaching();
restConfiguration().host("0.0.0.0").port(PORT)
.endpointProperty("headerFilterStrategy", "#myHeaderFilterStrategy")
.endpointProperty("matchOnUriPrefix", "true")
.endpointProperty("sendServerVersion", "false")
.bindingMode(RestBindingMode.json);
rest(API_CONTEXT + V1)
.post(API_OPERATION)
.type(RequestModel.class)
.outType(Response.class)
.consumes(APPLICATION_JSON)
.produces(APPLICATION_JSON)
.to(MAIN_ROUTE);
from(MAIN_ROUTE)
.routeId(MAIN_ROUTE)
.process(requestValidator)
.to(SERVICE_CALL)
.end();
private void setupStreamCaching() {
getContext().setStreamCaching(true);
getContext().getStreamCachingStrategy().setSpoolDirectory("/tmp/cachedir");
getContext().getStreamCachingStrategy().setSpoolThreshold(2); //(64 * 1024);
getContext().getStreamCachingStrategy().setBufferSize(2);//(16 * 1024);
}