Camel 3.0 - RoadmapPage edited by Christian SchneiderChanges (1)
Full ContentCamel 3.0 roadmapThis is a roadmap which details the overall and major goals for Camel 3.0. Fell free to discuss this at the Camel Mailing Lists if you have ideas or feedback. The Camel PMC conducted a survey in Oct 2010 to get a better understanding of how Camel is used and what the priorities for Camel 3.0 should be.
Clearer Architecture of Camel CoreGoals:
So why should this be important? Currently components depend on camel-core as a whole and there are no further rules which classes the components should use and which classes should be private to core. Even classes from the impl package are needed. So this means that any refactoring we do in camel core could affect all components. As camel is growing steadily this can become quite problematic. Split camel-core into three parts: api, builder, impl These should be structured in a way that these big building blocks do not have cyclic dependencies. Any other cycles can be ignored in this step. Allowed depdencies ( "->" means may use, may depend on):
Define scope and rules for camel-core packagesIn extension to the previous paragraph each camel package should have a clear scope that defines what to put in the package and what not. There should be rules that define what dependencies are allowed for classes in a package. The minimum goal is to guarantee that by following the rules dependency cycles can not happen. Additionally the rules should minimize dependencies between packages to achieve loose coupling between packages and high coherence inside a package. Routing engine optimizationThe internal routing engine should be optimized. See more details at Camel 2.x Speed optimizations. Tighten up route definitionsCurrently cross cutting concerns such as error handlers, interceptors, onCompletion etc. can be define anywhere in the route. We should tighten this up and only allow this to be configured in the start of the route. This also ensures when end users use code assistance in their route development, the IDE will not popup a big list which includes these cross cutting concerns. See also next note. (ProcessorDefinition will therefore be trimmed) More flexible routes at runtimeWhen routes is added in Camel 2.x architecture, global cross cutting concerns such as error handlers, interceptors, onCompletion etc. is applied when the route is added. We need to separate this and have those applied during routing. The Channel needs to do this and therefore it must be more dynamic than its currently is. And we need to enlist the various global cross cutting concerns by their xxxDefintions in the CamelContext, so we can access them at any time. This allows end users also much more easily to add/remove interceptors, error handlers and whatnot at runtime. And it makes it much easier to add routes generated from JAXB or other sources, as we don't need to prepare or anyhow mold the RouteDefinition given. See ticket CAMEL-3024 for some details. Support for asynchronous transactionsWhen using the asynchronous routing engine it would be desirable of transactional context could be propagated to the new threads. Remove @deprecated@deprecated features, methods, etc. is to be removed. Stream cachingWe could add support for using HawtDB as the persistent store for streams which overflow to disk store. EIPThe Resequencer EIP currently doesn't support persistence, we could introduce this and let it leverage HawtDB such as we did with the Aggregator2 EIP. Schedule in DSLWe could consider adding DSL syntax sugar for scheduling routes. For example currently you have to use Quartz or a ScheduledPollingConsumer which has the delay option. We could add DSL which has something like: schedule().every(5).minute().pollFrom("xxx").to("yyyy")
OSGi enhancements
Easier commit/rollback for component developersMaybe expose some interface having commit / rollback methods to make it easier for component developers to implement custom logic. Currently they may not know about OnCompletion and how to use UnitOfWork on Exchange to do this today. Unify uri/refInstead of having both uri and ref for endpoints, we should unify this and only use uri. If people want to use ref, then they can do that using "ref:xx" as an uri. This would simplify code as we dont have to check for either one. Less Spring dependenciesDONE in Camel 2.9 In camel-core we use the Spring JMX annotations to more easily enlist our MBeans. We should move that logic to camel-spring. And introduce a Camel specific annotations to replace those. For example ActiveMQ does that. This allows us to use camel-core with JMX without any spring JARs at all. End users can still use the Spring JMX annotations in their custom code / components. They just need camel-spring on the classpath. Likewise we should move the ResourceEndpoint from camel-spring to camel-core. This ensures that resource loading on classpath works with Camel as we can leverage the ClassResolver. For example OSGi blueprint does not work with the Spring ResourceEndpoint. Also this ensures the components that uses ResourceEndpoint will no longer be dependent on Spring. Then we are down to have Spring JAR dependency in: camel-jms and camel-mail. Introduce Camel JMX annotationsDONE in Camel 2.9 See above about less Spring dependency. Refactor UnitOfWorkThe implementation of DefaultUnitOfWork seems to have transformed itself into a to broad concern where unit of work is doing a bit more work than the transactional aspect that ties to its name. Improvements to ThreadPoolProfile for thread managementWe could move ThreadPoolProfile from org.apache.camel.spi to org.apache.camel and have it in the root package.
Change Notification Preferences
View Online
|
View Changes
|
Add Comment
|
- [CONF] Apache Camel > Camel 3.0 - Roadmap confluence
- [CONF] Apache Camel > Camel 3.0 - Roadmap confluence
- [CONF] Apache Camel > Camel 3.0 - Roadmap confluence
- [CONF] Apache Camel > Camel 3.0 - Roadmap confluence
- [CONF] Apache Camel > Camel 3.0 - Roadmap confluence
- [CONF] Apache Camel > Camel 3.0 - Roadmap confluence
- [CONF] Apache Camel > Camel 3.0 - Roadmap confluence
- [CONF] Apache Camel > Camel 3.0 - Roadmap confluence