Author: buildbot Date: Sat Mar 16 19:16:25 2013 New Revision: 854766 Log: Production update by buildbot for camel
Modified: websites/production/camel/content/cache/main.pageCache websites/production/camel/content/camel-30-ideas.html Modified: websites/production/camel/content/cache/main.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/camel/content/camel-30-ideas.html ============================================================================== --- websites/production/camel/content/camel-30-ideas.html (original) +++ websites/production/camel/content/camel-30-ideas.html Sat Mar 16 19:16:25 2013 @@ -92,7 +92,7 @@ <table class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><tbody><tr><td colspan="1" rowspan="1" valign="top" class="confluenceTd" width="20%"> <div class="panel" style="border-width: 1px;"><div class="panelContent"> <div> -<ul><li><a shape="rect" href="#Camel3.0-Ideas-Camel3.0Ideas">Camel 3.0 Ideas</a></li><ul><li><a shape="rect" href="#Camel3.0-Ideas-Tableofcontents">Table of contents</a></li><li><a shape="rect" href="#Camel3.0-Ideas-JDKsupport">JDK support</a></li><li><a shape="rect" href="#Camel3.0-Ideas-JDK8JavaDSL">JDK8 Java DSL</a></li><li><a shape="rect" href="#Camel3.0-Ideas-ClearerArchitectureofCamelCore">Clearer Architecture of Camel Core</a></li><ul><li><a shape="rect" href="#Camel3.0-Ideas-Splitcamelcoreintomultipleparts%28hadrian%29">Split camel-core into multiple parts (hadrian)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Avoidshadinggoogleconcurrentlinkedmapincamelcore">Avoid shading google concurrent linked map in camel-core</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Definescopeandrulesforcamelcorepackages%28champion%3F%29">Define scope and rules for camel-core packages ( <em>champion</em>?)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Moreflexibleroutesatrunt ime%28claus%29">More flexible routes at runtime (claus)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Fixrouteswithmultipleinputs%28claus%29">Fix routes with multiple inputs (claus)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-RouteinitializationlogicforJavaDSLandXMLDSLs%28claus%29">Route initialization logic for Java DSL and XML DSLs (claus)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-AddOnException%2CInterceptor%2Cetc.toJAXBmodelforaCamelContextDefinition%28claus%29">Add OnException, Interceptor, etc. to JAXB model for a CamelContextDefinition (claus)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Tightenuproutedefinitions%28claus%29">Tighten up route definitions (claus)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-MessageHistoryEIP%2FMessageStore%28ChristianOhr%29">Message History EIP/Message Store (Christian Ohr)</a></li></ul><li><a shape="rect" href="#Camel3.0-Ideas-DependencyUpgrades">Dependency Upgrades</a></li><li><a shape="rect" href="#Camel3. 0-Ideas-JMXnaming">JMX naming</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Removenotusedcomponents">Remove not used components</a></li><li><a shape="rect" href="#Camel3.0-Ideas-SplitcamelcxfintoWSandREST">Split camel-cxf into WS and REST</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Oldideas">Old ideas</a></li><ul><li><a shape="rect" href="#Camel3.0-Ideas-Supportforasynchronoustransactions">Support for asynchronous transactions</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Streamcaching">Stream caching</a></li><li><a shape="rect" href="#Camel3.0-Ideas-EIP">EIP</a></li><li><a shape="rect" href="#Camel3.0-Ideas-ScheduleinDSL">Schedule in DSL</a></li><li><a shape="rect" href="#Camel3.0-Ideas-AdvancedScalasupport">Advanced Scala support</a></li><li><a shape="rect" href="#Camel3.0-Ideas-MoreEIPsas@annotations">More EIPs as @annotations</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Unifiedstatistics">Unified statistics</a></li><li><a shape="rect" href="#Camel3.0-I deas-SEDA%2FVMcomponentstoleverageasyncroutingengine">SEDA/VM components to leverage async routing engine</a></li><li><a shape="rect" href="#Camel3.0-Ideas-camelosgitest">camel-osgi-test</a></li><li><a shape="rect" href="#Camel3.0-Ideas-REST">REST</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Moreloadtests%28cmueller%29">More load tests (cmueller)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-OSGienhancements">OSGi enhancements</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Easiercommit%2Frollbackforcomponentdevelopers">Easier commit/rollback for component developers</a></li><li><a shape="rect" href="#Camel3.0-Ideas-RefactorUnitOfWork">Refactor UnitOfWork</a></li><li><a shape="rect" href="#Camel3.0-Ideas-ImprovementstoThreadPoolProfileforthreadmanagement">Improvements to ThreadPoolProfile for thread management</a></li><li><a shape="rect" href="#Camel3.0-Ideas-TightenuponException">Tighten up onException</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Addcomposit eEIPtocomposeanumberofEIPsintoasingleEIP">Add composite EIP to compose a number of EIPs into a single EIP</a></li><li><a shape="rect" href="#Camel3.0-Ideas-RemoveSpringtransactiondependencyfromJMScomponent%28RemovedbecauseSJMSwillbenonspringversion%29"> </a><del>Remove Spring transaction dependency from JMS component</del> (Removed because SJMS will be non-spring version)</li></ul></ul></ul></div> +<ul><li><a shape="rect" href="#Camel3.0-Ideas-Camel3.0Ideas">Camel 3.0 Ideas</a></li><ul><li><a shape="rect" href="#Camel3.0-Ideas-Tableofcontents">Table of contents</a></li><li><a shape="rect" href="#Camel3.0-Ideas-JDKsupport">JDK support</a></li><li><a shape="rect" href="#Camel3.0-Ideas-JDK8JavaDSL">JDK8 Java DSL</a></li><li><a shape="rect" href="#Camel3.0-Ideas-RoutingCoreReengineering%28raulk%29">Routing Core Re-engineering (raulk)</a></li><ul><li><a shape="rect" href="#Camel3.0-Ideas-ConvertingsomeEIPsfrom%22performers%22tomere%22deciders%22">Converting some EIPs from "performers" to mere "deciders"</a></li></ul><li><a shape="rect" href="#Camel3.0-Ideas-ClearerArchitectureofCamelCore">Clearer Architecture of Camel Core</a></li><ul><li><a shape="rect" href="#Camel3.0-Ideas-Splitcamelcoreintomultipleparts%28hadrian%29">Split camel-core into multiple parts (hadrian)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Avoidshadinggoogleconcurrentlinkedmapincamelcore">Avoid sh ading google concurrent linked map in camel-core</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Definescopeandrulesforcamelcorepackages%28champion%3F%29">Define scope and rules for camel-core packages ( <em>champion</em>?)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Moreflexibleroutesatruntime%28claus%29">More flexible routes at runtime (claus)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Fixrouteswithmultipleinputs%28claus%29">Fix routes with multiple inputs (claus)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-RouteinitializationlogicforJavaDSLandXMLDSLs%28claus%29">Route initialization logic for Java DSL and XML DSLs (claus)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-AddOnException%2CInterceptor%2Cetc.toJAXBmodelforaCamelContextDefinition%28claus%29">Add OnException, Interceptor, etc. to JAXB model for a CamelContextDefinition (claus)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Tightenuproutedefinitions%28claus%29">Tighten up route definitio ns (claus)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-MessageHistoryEIP%2FMessageStore%28ChristianOhr%29">Message History EIP/Message Store (Christian Ohr)</a></li></ul><li><a shape="rect" href="#Camel3.0-Ideas-DependencyUpgrades">Dependency Upgrades</a></li><li><a shape="rect" href="#Camel3.0-Ideas-JMXnaming">JMX naming</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Removenotusedcomponents">Remove not used components</a></li><li><a shape="rect" href="#Camel3.0-Ideas-SplitcamelcxfintoWSandREST">Split camel-cxf into WS and REST</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Oldideas">Old ideas</a></li><ul><li><a shape="rect" href="#Camel3.0-Ideas-Supportforasynchronoustransactions">Support for asynchronous transactions</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Streamcaching">Stream caching</a></li><li><a shape="rect" href="#Camel3.0-Ideas-EIP">EIP</a></li><li><a shape="rect" href="#Camel3.0-Ideas-ScheduleinDSL">Schedule in DSL</a></li><li><a shape="rect" href="#Camel3.0-Ideas-AdvancedScalasupport">Advanced Scala support</a></li><li><a shape="rect" href="#Camel3.0-Ideas-MoreEIPsas@annotations">More EIPs as @annotations</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Unifiedstatistics">Unified statistics</a></li><li><a shape="rect" href="#Camel3.0-Ideas-SEDA%2FVMcomponentstoleverageasyncroutingengine">SEDA/VM components to leverage async routing engine</a></li><li><a shape="rect" href="#Camel3.0-Ideas-camelosgitest">camel-osgi-test</a></li><li><a shape="rect" href="#Camel3.0-Ideas-REST">REST</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Moreloadtests%28cmueller%29">More load tests (cmueller)</a></li><li><a shape="rect" href="#Camel3.0-Ideas-OSGienhancements">OSGi enhancements</a></li><li><a shape="rect" href="#Camel3.0-Ideas-Easiercommit%2Frollbackforcomponentdevelopers">Easier commit/rollback for component developers</a></li><li><a shape="rect" href="#Camel3.0-Ideas-RefactorUnitOfWork">Refactor UnitOfWork</a></li><li><a shape="rect" href="#Camel3.0-Ideas-ImprovementstoThreadPoolProfileforthreadmanagement">Improvements to ThreadPoolProfile for thread management</a></li><li><a shape="rect" href="#Camel3.0-Ideas-TightenuponException">Tighten up onException</a></li><li><a shape="rect" href="#Camel3.0-Ideas-AddcompositeEIPtocomposeanumberofEIPsintoasingleEIP">Add composite EIP to compose a number of EIPs into a single EIP</a></li><li><a shape="rect" href="#Camel3.0-Ideas-RemoveSpringtransactiondependencyfromJMScomponent%28RemovedbecauseSJMSwillbenonspringversion%29"> </a><del>Remove Spring transaction dependency from JMS component</del> (Removed because SJMS will be non-spring version)</li></ul><li><a shape="rect" href="#Camel3.0-Ideas-DefaulttouseTransactedmodebydefault">Default to use Transacted mode by default</a></li></ul></ul></div> </div></div></td></tr></tbody></table> <h3><a shape="rect" name="Camel3.0-Ideas-JDKsupport"></a>JDK support</h3> @@ -111,6 +111,25 @@ We should aim to be compatible with JDK8 Though this may comes later in Camel 3.x when JDK8 is GA.<br clear="none"> At least stuff like Predicate, Expression, AggregationStrategy etc. are "functional interfaces" (containing only one method) and Java 8 applications can implement them using lambdas. That's only a start, but it doesn't require a specific DSL.</p> +<h3><a shape="rect" name="Camel3.0-Ideas-RoutingCoreReengineering%28raulk%29"></a>Routing Core Re-engineering (raulk)</h3> + +<p>The routing core of Camel 2.x is heavily based on a recursive call pattern, where Processors are responsible for calling the next one along the chain. This results in lengthy and meaningless stacktraces (difficult to make sense out of and debug for newcomers) and higher memory usage due to retention of local variables for a longer time than strictly needed. </p> + +<p>Moreover, Camel weaves a large number of "plumbing" processors along the way which should not really be processors because they form part of the very essence of the routing core, e.g. error handlers, stream caching interceptors, trace interceptors, async processor helpers, MDC, etc.</p> + +<p>The proposal is to shift towards an iterative model, by redesigning the logic of Camel routing. The suggested model is defined by these pillars:</p> + +<ul class="alternate" type="square"><li>A single class, or a limited set of them, contain the routing logic of Camel. Package name: <tt>org.apache.camel.core.routing</tt>. Central (abstract) class: <tt>RoutingCore</tt>. Concrete realisations could be: PipeliningRoutingCore, MulticastRoutingCore, depending on the fundamental routing pattern.</li><li>The RoutingCore iteratively calls the routing steps, one after another. The routing steps return their result to the <tt>RoutingCore</tt>, who is in charge of calling the next element subsequently. OUT and IN are bridged if necessary (PipeliningRoutingCore).</li><li>The Processor interface is crumbled up into its many specialisations, each of which represents a distinct concept of the Camel framework: RoutingDecider (EIPs should only take decisions about the routing, but <b>not</b> perform the routing itself, e.g. choice, filter, loop, throttle, etc.; see examples in subsection below.), Actions, ErrorHandler (already exists), Inte rceptor, etc.</li><li>The RoutingCore is responsible of all the "magic" now disseminated across a number of processors. Assisted by Helper classes.</li></ul> + + +<p>The goal of this idea isn't to zap off recursion altogether, just to consolidate the routing logic into a handful of cornerstone classes.</p> + +<p>Camel is no longer a baby and the framework concepts are well mature, thus they should be transferred to the API and avoid making everything a raw Processor.</p> + +<h4><a shape="rect" name="Camel3.0-Ideas-ConvertingsomeEIPsfrom%22performers%22tomere%22deciders%22"></a>Converting some EIPs from "performers" to mere "deciders"</h4> + +<ul class="alternate" type="square"><li>choice() => evaluates the predicates and returns the List of Processors or Endpoints to invoke.</li><li>filter() => same as choice(), but returning null if the filter doesn't match, to continue to the next routing step.</li><li>loop() => evaluates whether the looping control predicate still stands. If yes, it returns the processors to invoke, where the last is itself (to trigger the looping logic again); else, it returns null to continue to the next routing step.</li><li>throttle() => pauses accordingly and then returns the endpoint/processors to invoke.</li><li>...</li></ul> + <h3><a shape="rect" name="Camel3.0-Ideas-ClearerArchitectureofCamelCore"></a>Clearer Architecture of Camel Core</h3> @@ -338,7 +357,17 @@ It may make more sense to move onRedeliv <p><del>(+1: cgeer)</del></p> -<p><del>Refactor the JMS component to remove the dependency on Spring PlatformTransactionManager and replace with JTA TransactionManager.</del></p></div> +<p><del>Refactor the JMS component to remove the dependency on Spring PlatformTransactionManager and replace with JTA TransactionManager.</del></p> + +<h3><a shape="rect" name="Camel3.0-Ideas-DefaulttouseTransactedmodebydefault"></a>Default to use Transacted mode by default </h3> + +<p>One thing I regret about the design of Camel was defaulting to non-transacted mode by default and forcing users to explicitly enable transactional model with a Transaction Manager.</p> + +<p>It might be nice in Camel 3 to assume everything is transacted by default; and mimmick a form of transaction manager for non-transactional resource.</p> + +<p>e.g. its pretty common to work with messaging like JMS and databases as a common set of endpoints; the easiest thing that could possibly work for end users is for those to just be transacted by default without the user having to grok how to tinker with component configurations & Transaction Manager registration.</p> + +<p>Note I'm not advocating XA here; I think the default for camel should be for Idempotent Consumer and simple approach to middleware</p></div> </td> <td valign="top"> <div class="navigation">