This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 9d252d8 CAMEL-16205: camel-http - Optimize extract response body for small payloads 9d252d8 is described below commit 9d252d850adbc3cb198acb2125dfd814e2f2aded Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sun Feb 14 14:06:46 2021 +0100 CAMEL-16205: camel-http - Optimize extract response body for small payloads --- .../apache/camel/component/http/HttpProducer.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java index f4a7989..df4ba01 100644 --- a/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java +++ b/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java @@ -429,12 +429,22 @@ public class HttpProducer extends DefaultProducer { } } else { if (!getEndpoint().isDisableStreamCache()) { - // wrap the response in a stream cache so its re-readable - InputStream response = null; - if (!ignoreResponseBody) { - response = doExtractResponseBodyAsStream(is, exchange); + if (ignoreResponseBody) { + // ignore response + return null; + } + long len = entity.getContentLength(); + if (len > 0 && len < IOHelper.DEFAULT_BUFFER_SIZE) { + // optimize when we have content-length for small sizes to avoid creating streaming objects + int i = (int) len; + byte[] arr = new byte[i]; + is.read(arr, 0, i); + IOHelper.close(is); + return arr; + } else { + // else for bigger payloads then wrap the response in a stream cache so its re-readable + return doExtractResponseBodyAsStream(is, exchange); } - return response; } else { // use the response stream as-is return is;