Hey there, I was hoping I could pick some brain to gather a idea that can work. But first let me explain my intentions. So the idea is to save the body and headers of the exchange for auditing purposes.
To get this to work, we're using a Tracer and configured the destination uri to point to a route we defined to process the exchanges. At the route we have a custom processor which will filter out the information we need from the exchange. One step of the process is to convert the body of the exchange to a string. What we've noticed, is that if we use the traced exchange and convert the body to a string. This sometimes has an effect on the body of the original exchange and consequently has an effect on the original routing. This is of course because no deep copying is performed on the exchange. So we tried to work around the problem and see if we could come up with a kind of deep copy of our own. We ended up trying this approach: private Exchange copyExchange(Exchange exchange) { CamelContext camelContext = exchange.getContext(); DefaultExchangeHolder exchangeHolder = DefaultExchangeHolder.marshal(exchange); Exchange newExchange = new DefaultExchange(camelContext); DefaultExchangeHolder.unmarshal(newExchange, exchangeHolder); return newExchange; } This approach seemed to work fine, but we encountered some issues. When we for example receive a GenericFile from a File component we can't unmarshal that request. I got this issue: org.apache.camel.RuntimeExchangeException: Message body of type org.apache.camel.component.file.GenericFile is not supported by this marshaller. on the exchange: Exchange[test.txt] at org.apache.camel.impl.DefaultExchangeHolder.marshal(DefaultExchangeHolder.java:93)[156:org.apache.camel.camel-core:2.13.2] at org.apache.camel.impl.DefaultExchangeHolder.marshal(DefaultExchangeHolder.java:77)[156:org.apache.camel.camel-core:2.13.2] at nl.kabisa.flux.transactions.TraceProcessor.copyExchange(TraceProcessor.java:53)[272:nl.kabisa.flux.transaction-logger:2.1.1.SNAPSHOT] Eventually I only need to make sure I can convert the body safely to a string without interfering with the original exchange body. Is there anybody with some advise how I could accomplished that? PS: using Camel 2.13.2 in Karaf 2.3.6 Thanks in advance! -- View this message in context: http://camel.465427.n5.nabble.com/Safely-copy-exchange-body-tp5763551.html Sent from the Camel - Users mailing list archive at Nabble.com.