Apache Camel流缓存,Java

时间:2019-02-12 14:45:29

标签: apache-camel

我正在使用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);

        }

http://camel.apache.org/stream-caching.html

0 个答案:

没有答案