THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Logic can be build in to cater for this. For instance:
- Some interface to indicate whether a Processor can mutate or not.
- .process can mutate (you get access to the entire Exchange)
- .bean can mutate (only in some situations)
- we can allow end users to indicate whether they mutate the exchange or not
- we can let end users set a flag on the exchange if it was mutated
- we can add some proxy if getBody/setBody getHeader/setHeader was invoked on IN message to indicate if it was possible to mutate it
We dont have to go all the way, by having just all the Camel component/processors being able to indicate whether they can mutate or not is a big win.
The optimizations of bean/process can be secondary objective as it can be a bit overkill and complex.
...
Claus used YourKit to find the following hot spots:
- type converter to String could be greatly optimized as it tended to go over fallback converters
- recipient list with only 1 element could be avoid to not use a Scanner as creating a Scanner costs performance
Performance tests
We should have some performance tests we can run and see what we archive.
...