Мы обновили Apache Camel 3.16.0 до 4.7.0 (включая обновление Java 11 до 21). Мы должны передавать большие HTTP-ответы без кэширования, но в новой версии это больше не работает, как ожидалось. У нас есть такой маршрут:
from(DIRECT_GETITEM)
.process(collectionCheckingPdp)
.setHeader(Exchange.HTTP_METHOD, constant(HTTP_GET))
.removeHeader(Exchange.HTTP_URI)
.process(new StorageManagerPathProcessor())
.to("http://localhost:9099?disableStreamCach ... HttpFilter");
В версии Camel 3.16.0 тело результирующего сообщения обмена имело тип org.apache.http.conn.EofSensorInputStream.
Но в Camel 4.7 .0, тело сообщения обмена представляет собой массив byte[], хотя мы все равно ожидаем поток.
Что мы можем сделать, чтобы избежать чтения ответа в памяти и получить то же поведение, что и в старой версии?< /p>
Поскольку мы используем Spring Boot, я также попробовал эту настройку в application.properties, но без какого-либо эффекта:
camel.component.http.response-payload-streaming-threshold=-1
Подробнее здесь: https://stackoverflow.com/questions/790 ... ndpoint-as