WHAT IS APACHE CAMEL Apache Camel is a powerful Open Source Integration Framework based on known Enterprise Integration Patterns http://camel.apache.org
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)
WHY THE NAME CAMEL Concise Application Messaging Exchange Language http://camel.apache.org/why-the-name-camel.html
ESB Simplifies Integration and flexible reuse of business components using Service Oriented Architecture Glue that holds the compound application together
WHAT IS ESBhttp://i.msdn.microsoft.com/Cc487894.bddfbe7f-6ee2-4072-91f1-402c87ee92ad(en-us,MSDN.10).png
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.
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
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
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.”
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
WHY MESSAGINGRemote CommunicationPlatform/Language Integration communicate different systems running different platforms, using different languages
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
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
MESSAGE BROKER Decouple the destination message from the Sender And maintain central control over the flow Of messages Message Broker
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
CHARACTERISTICS OF ESB Message Message Service MappingEnhancement Transformation Protocol Routing Transmission Transaction Security Service Message Management Orchestration Processing
OSGI The Open Services Gateway Initiative (OSGi) Dynamic Module System for Java Architecture for modular application development.
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).
BACK TO CAMEL RIDE 50 Enterprise Integration Patterns http://camel.apache.org/eip
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
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