[
https://issues.apache.org/jira/browse/CAMEL-4178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13060529#comment-13060529
]
Claus Ibsen commented on CAMEL-4178:
------------------------------------
You can enable stream caching
http://camel.apache.org/stream-caching
> WireTap should auto-convert streams to string so it always works by default
> ---------------------------------------------------------------------------
>
> Key: CAMEL-4178
> URL: https://issues.apache.org/jira/browse/CAMEL-4178
> Project: Camel
> Issue Type: Improvement
> Components: camel-core
> Affects Versions: 2.7.2
> Reporter: Josef Jahn
> Priority: Minor
>
> When wiretapping the result of a http request (to uri="http://foo"), the
> wiretap does not work because the result is a stream. The developer has to
> remember to convert the result to a string first to avoid the first
> consumption of the stream to make the data not available for wiretapping.
> In the interest of "defaults that work", maybe the wiretap should "know" to
> handle streams in a way that makes the wiretap work without extra
> consideration by the developer. Streams could be auto-converted to string or,
> if the amount of data is larger than a certain pre-configured threshold,
> cache them to disk and read the resulting file.
> Here's an example of a route that needs a convertBodyTo to make the wiretap
> work. Without this, the wiretap quietly fails, and it can be quite
> time-consuming to try to find out why.
> {code:xml}
> <route>
> <!-- jetty listening on port 8087 -->
> <from uri="jetty:http://0.0.0.0:8087/wsn/Broker"/>
> <!-- log input received -->
> <wireTap
> uri="file:data/recording?fileName=wsn-${date:now:yyyyMMdd}.log&fileExist=Append">
> <body>
> <simple>[${date:now:dd.MM.yyyy hh:mm:ss}] [INCOMING
> REQUEST]: ${in.body}

</simple>
> </body>
> </wireTap>
> <!-- send proxied request to actual web service -->
> <removeHeaders pattern="CamelHttp*"/>
> <removeHeader headerName="Accept-Encoding"/>
> <to uri="http://127.0.0.1:8192/wsn/Broker/"/>
> <!-- convert to string to prevent the stream to be consumed by the
> wiretap -->
> <convertBodyTo type="String"/>
> <!-- log answer from real web service -->
> <wireTap
> uri="file:data/recording?fileName=wsn-${date:now:yyyyMMdd}.log&fileExist=Append">
> <body>
> <simple>[${date:now:dd.MM.yyyy hh:mm:ss}] [OUTGOING
> RESPONSE]: ${in.body}

</simple>
> </body>
> </wireTap>
> </route>
> {code}
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira