Я использую Camel 2.18 и Java 8. Ниже приведен код с маршрутизацией.Я помещаю такой JSON в этот сервис:
{
"bigField": "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest",
"smallField": "234"
}
И проблема в том, что bigField довольно большой, может быть 256MB.Вот почему я думаю о потоковом кешировании в Camel: http://camel.apache.org/stream-caching.html Не уверен, смогу ли я применить его в моем сценарии?Что я понимаю, что этот механизм должен хранить поток на диске понемногу?Я создал каталог / tmp / cachedir и там ничего не появляется.Я отправляю 5 МБ запросов.
Чего мне не хватает?
@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