Camel uses a Java based Routing Domain Specific Language (DSL) or an Xml Configuration to configure routing and mediation rules which are added to a CamelContext to implement the various Enterprise Integration Patterns.
At a high level Camel consists of a CamelContext which contains a collection of Component instances. A Component is essentially a factory of Endpoint instances. You can explicitly configure Component instances in Java code or an IoC container like Spring or Guice, or they can be auto-discovered using URIs.
An Endpoint acts rather like a URI or URL 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 on an Endpoint to exchange messages with it.
The DSL makes heavy use of pluggable Languages to create an Expression or Predicate to make a truly powerful DSL which is extensible to the most suitable language depending on your needs. The following languages are supported
Bean Language for using Java for expressions
the unified EL from JSP and JSF
Scripting Languages such as
Most of these languages is also supported used as Annotation Based Expression Language.
The following links are to the individual parts of the Architecture.
- Asynchronous Routing Engine
- Batch Consumer
- Camel Core
- Clustering And Loadbalancing
- Data Format
- Delay Interceptor
- Dependency Injection
- Dozer Type Conversion
- Error Handler
- Exchange Pattern
- Inversion Of Control With Smart Defaults
- Pluggable Class Resolvers
- Stream Caching
- Threading Model
- Type Converter
- Xml Configuration