Hello devs,

not sure if it make sense for everyone but after working a little bit on
the default camel context for CAMEL-11443 I think we should try to break
it into logical components to make it easy to evolve and improve it so
for camel 3.0 I was thinking something like:

- Add a concept of RouteLoader which is in charge of building the route
  definitions from a source, to eventually monitor the source for
  changes and then refresh the contex so i.e. we can move the current
  process of loading routes from xml to a dedicated XMLRouteLoader. It
  should be possible to add more loaders so one can load routes from
  different sources (yaml, json, groovy)

- Add a concept of RouteControler which is in charge of routes'
  life-cycle, this is partially done by CAMEL-11443 but for 2.x it will
  be more a placeholder that an concrete implementation as the
  life-cycle of routes involves quite a bit of code and it is quite hard
  to introduce a proper life-cycle manager without breaking the things.
  In my mind the camel context should be a bridge between RouteLoader
  and the RouteController then the specific route controller can do its
  job like:

  - start routes in parallel
  - handle reoutes dependencies (CAMEL-8599)
  - restart failing routes
  - etc

- Have a single and complete source fo events, as today we can listen
  for events using different concepts:

  - LifecycleStrategy
  - StartupListener
  - EventNotifier
  - RoutePolicy

  Some of them seems overlapping a little so we may create 'contextual'
  listeners like RouteEventListener, ExchangeEventListener, etc and
  then i.e. the RoutePolicy could extend only what make sense for the
  context so for the camel context prospective only an event has to be
  fired. Listeenrs can eventually throw an uncheckd "VetoedException"
  if the operation should not be done (i.e. a policy may prevent to
  stop or start a route if certain circumstances).

I know it is not a simple task but I think it is wort at least try to
do it.


Thoughts ?


---
Luca Burgazzoli

Reply via email to