Architecture
Camel is based around a Java Domain Specific Language (DSL) to configure the routing and mediation you require using type-safe Java code which has IDE smart completion without the need for reams of XML.
At a high level Camel consists of a CamelContext which contains a collection of Component instances.
You can explicitly configure Component instances in an IoC container like Spring or Guice, or they can be auto-discovered using URIs. A Component is essentially a factory of Endpoint instances. An individual Endpoint acts rather like a URI in a web application or a Destination in a JMS system; you can communicate with an endpoint; either sending messages to it or consuming messages from it. You can then create a Producer or Consumer of an Endpoint to exchange messages with it.
The DSL or Xml Configuration then adds Routes to a CamelContext which implement the various Enterprise Integration Patterns.
The DSL makes heavy use of Expression and Predicate syntax so that different languages can be plugged into the DSL such as
- Scripting Languages such as Ruby, Groovy, JavaScript, Python etc
- SQL
- XPath and XQuery
Links
The following links are to the individual parts of the Architecture.