Hello team, We use a recursive model in our routing engine to chain processors with one another to process exchanges.
This results in lengthy stacktraces and increased memory usage due to local variable retention for longer than strictly needed, IMHO. This recent question on Stack Overflow is a typical (short!) stacktrace: http://stackoverflow.com/questions/14734983/camel-ftp-intermittent-issue. Debugging it can be daunting for users. Moreover many infrastructural Processors are woven implicitly along the processor chain. Maybe this logic should belong elsewhere (the routing core itself?). Now that the Camel routing model is consolidated, can we start thinking about moving towards an iterative routing approach? I feel the recursive approach worked wonders when Camel was still a baby and the architecture was heavily evolving: basically any processor, at any point, could do anything to the exchange. And everything was a processor. Flexible and versatile! But now that the concepts are well rooted, I feel we need to formally define "the routing process", rather than leaving it all up to processors to be assembled in the right order. I realize my proposal may sound somewhat abstract at this point, but before going to further length, I want to gauge if my concern is shared. What do you think? Raúl.