2. WHAT IS APACHE CAMEL
Apache Camel is a powerful Open Source
Integration Framework based on known
Enterprise Integration Patterns
http://camel.apache.org
3. INTEGRATION PATTERNS
A design pattern is a general reusable solution
to a commonly occurring problem within a given
context in software design
Patterns don’t desribe a problem, and don’t
describe how to solve it-they tell you what to do
to solve it (Ref:Enterprise Integration Pattern)
4. WHY THE NAME CAMEL
Concise
Application
Messaging
Exchange
Language
http://camel.apache.org/why-the-name-camel.html
6. WHAT IS APACHE SERVICE MIX
Lightweight Open Source ESB and SOA
Container
Built on JBI Specification
Supports OSGi
Can run as a standalone ESB provider or as a
service within another ESB
8. ESB
Simplifies Integration and flexible reuse of
business components using Service Oriented
Architecture
Glue that holds the compound application
together
10. ESB ARCHITECTURE
ESB Delivers messages from one point to another
Bus architecture uses a central messaging backbone (bus)
for message propagation.
Applications would publish messages to bus using
adapters.
These messages would flow to subscribing applications
using message bus.
Subscribing applications will have adapters
which would take message from bus and transform the
message into a format required for
the application.
11. BUS ARCHITECTURE
App A App B App C
Adapter Adapter B Adapter C
Messaging Backbone
Adapter Z Adapter G Adapter K
App Z App G App K
13. WHAT IS SOA
Service-Oriented Architecture (SOA) is an
architectural style.
Applications built using an SOA style deliver
functionality as services that can be used or
reused on a network.
Each service would achieve a predefined
business objective and perform discrete units of
work.
The services are independent and do not depend
on the context or state of the other services. They
work within distributed systems architecture
14. WHAT IS A SERVICE
A service is a reusable component that can be
used as a building block to form larger, more
complex business-application functionality.
A service may be as simple as “get me some
person data,” or as complex as “process a
disbursement.”
15. WHY MESSAGING
Asynchronous operation
− Send and Forget Approach
− Sender doesn’t have to wait for the receiver to
receive and process the message
Variable Timing
Disconnected Operation
Loose Coupling
− Systems connected via messaging need not be
aware of each other, or use the same technologies
− Key messages can easily be routed to many systems
Message broker is buffer in case of downtime
17. WHY MESSAGING
Parallelize Work
− Messages in a single stream can be handled
in parallel by many client threads or systems
Throttle Work
− A large amount of work can be split across a
small number of threads or systems to
throttle effort
18. MESSAGING CONCEPTS
Each message is sent to a particular named
“destination” (a topic or queue)
Each message to a queue is processed by
exactly one consumer
Typically, one of many connected consumers
Each message to a topic is processed by all the
consumers connected to that topic
− May even be saved for consumers that happen
to be disconnected at the moment
19. MESSAGE BROKER
Decouple the destination message from the Sender
And maintain central control over the flow
Of messages
Message
Broker
21. ACTIVE MQ
Apache ActiveMQ is an open source (Apache
2.0 licensed) message broker which fully
implements the Java Message Service 1.1 (JMS)
JMS The Java API for messaging
22. CHARACTERISTICS OF ESB
Message Message
Service Mapping
Enhancement Transformation
Protocol
Routing Transmission
Transaction
Security Service Message Management
Orchestration Processing
23. OSGI
The Open Services Gateway Initiative (OSGi)
Dynamic Module System for Java
Architecture for modular application
development.
24. JBI
JBI is a java based standard to build integrations
systems by using plug-in components which
interoperates through mediated normalized
message exchanges.
The message exchange model is based on the web
services description language (WSDL).
25. BACK TO CAMEL RIDE
50 Enterprise Integration Patterns
http://camel.apache.org/eip
27. CAMEL (WHAT IS INSIDE )
18 DATA FORMATS
bindy protobuf
castor serialization
csv soap
crypto syslog
dozer tidy markup
flatpack xml beans
gzip xml security
hl7 xstream
jaxb zip
json
28. CAMEL(INSIDE THE BOX)
15 EXPRESSION LANGUAGES
BeanShell Python
EL Ruby
Groovy Simple
JavaScript SpEL
JSR 223 SQL
OGNL XPath
MVEL XQuery
PHP
29. Domain Specific Language
Domain-specific language
● Routing can be defined in DSL
● Java DSL
Fluent API that allows code completion by
your IDE
● Spring DSL
Custom namespace with XML tags for routing
● Scala DSL
Adding some Scala features on top of the
Java DSL