Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The internal routing engine should be optimized. See more details at Camel 2.x Speed optimizations.

Tighten up route definitions

Currently 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 runtime

...

@deprecated features, methods, etc. is to be removed.

Other ideas

Logging

We should Should we switch from commons-logging to slf4j?

Stream caching

We could add support for using HawtDB as the persistent store for streams which overflow to disk store.

EIP

The 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 DSL

We 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:

Code Block

schedule().every(5).minute().pollFrom("xxx").to("yyyy")

The hard part is to come up with a good DSL syntax. We can look at BAM and see what we got there as well.

The DSL should support both cron and non cron based, eg Quartz, Spring (spring 3 has cron) and regular JDK timers.

Fix routes with multiple inputs

The current implementation of routes with multiple inputs is to clone the route, which means you essentially got 2+ routes if a route has multiple inputs. However routes with multiple inputs is seldom used. The correct implementation is to only create one route but have multiple input consumers. This change will require a bit of change in current code as it relies on the only 1 input consumer on the route.

Up-to-date Scala DSL

The Scala DSL is slightly out of date as we have improved the DSL a bit here and there. We should check the gap and ensure the Scala is up-to-date.

More EIPs as @annotations

Currently its only the Routing Slip and Recipient List which are avail as @annotation as well. We could add more EIPs as annotations such as Splitter.
And also maybe annotations for AggregationStrategy to make this less Camel API dependent, so you can use a plain POJO for that.

Asynchronous transactions

With the Asynchronous Routing Engine it would be great if we could support asynchronous transaction as well. See CAMEL-2729 and CAMEL-2902