[ 
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&amp;fileExist=Append">
>               <body>
>                       <simple>[${date:now:dd.MM.yyyy hh:mm:ss}] [INCOMING 
> REQUEST]: ${in.body}&#xA;&#xD;</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&amp;fileExist=Append">
>               <body>
>                       <simple>[${date:now:dd.MM.yyyy hh:mm:ss}] [OUTGOING 
> RESPONSE]: ${in.body}&#xA;&#xD;</simple>
>               </body>
>       </wireTap>
> </route>
> {code} 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to