SlideShare a Scribd company logo
1 of 25
Download to read offline
Introduction
to
Apache camel
Problem Statement
Creating a single, big application to run a complete business
is next to impossible.
Enterprises are typically comprised of discrete applications.
• Custom built
• Acquired from 3rd party
• Legacy systems
• External systems
Integrating different applications to work together is a big
challenge.
Credit Services
Risk Management
Services
Direct Agents Internet
Business rules
Management systems
Rule
Repository
Compliance Policies Reporting
Back office
Loan Approval System
Solution
Enterprise Application Integration - EAI
Enterprise Application Integration is the use of software and
computer systems architectural principles to integrate a set
of enterprise software applications using Enterprise
Integration Patterns.
Available solutions
• Custom solution
• Enterprise Service Bus
• Mule ESB
• Service Mix ESB
• JBoss ESB
• Enterprise Integration Frameworks
• Spring Integration
• Apache Camel
What is Camel
Apache Camel is a Java based open-source integration
framework based on Enterprise Integration Patterns.
What is Camel cont.
Apache Camel allows your applications to accomplish
• Message routing between endpoints
• Message transformation
• Protocol mediation
Camel use the established Enterprise Integration Patterns
and out-of-the-box adapters with a highly expressive
Domain Specific Language (Java, Spring XML, Scala and
Groovy).
Why Apache Camel
• Routing and mediation engine
• Domain-specific language (DSL)
• Extensive component library
• Modular and pluggable architecture
• Easy configuration
• Conventions over configuration paradigm is followed.
• Automatic type converters
• Many built in type converters
• Data Format Converters
• Data Type Converters
• Create your own converters
Routing and Mediation Engine
• A routing engine moves the message around based on
the routing configuration.
• Routes are configured using DSL.
from(“step 1").to(“step 2");
• Camel route starts with “from” that act as a consumer.
• Once data is received by consumer
• A message will be created
• Message is transported to Camel route
Steps involves in message routing
• Message received by Consumer
• Message transformation
• Message format validation
• Enriching message contents
• Message splitting and aggregating
• Activity logging
Domain Specific Language (DSL)
Camel routes are created using a Domain Specific
Language (DSL), specifically tailored for application
integration.
Camel DSLs are:
• High-level languages
• Allow us to easily create routes
• Combining various processing steps
• No need for any low-level implementations
DSL Examples
• Java DSL
from("file:data/input").to("file:data/output");
• Spring DSL
<camel:route>
<camel:from uri="file:data/input?noop=true" />
<camel:to uri="file:data/output" />
</camel:route>
• Scala DSL
from "file:data/input" -> " file:data/output"
Extensive component library
Camel offers library of components that are modeled after
Enterprise Integration Patterns.
• Bean Component
• File Component
• JMS and ActiveMQ Component
• CXF Component
• Log component
• And many more…
Compete list of components can be found here.
http://camel.apache.org/components.html
Enterprise Integration Patterns
To help deal with the complexity of integration problems,
the Enterprise Integration Patterns
are the standard way to describe, document and implement
complex integration problems.
All integration patterns can be found in the book Enterprise
Integration Patterns by Gregor Hohpe and Bobby Woolf
published in January 2004.
Essential Integration Patterns
• Pipes and Filters
How to perform complex processing on a message while maintaining independence and
flexibility?
• Message Router
How to decouple individual processing steps so that messages can be passed to different
filters depending on a set of conditions?
• Message Translator
How can systems using different data formats communicate with each other using
messaging?
• Message Filter
How can a component avoid receiving unwanted messages?
Essential Integration Patterns cont.
• Splitter
How to split the message into pieces and process them individually.
• Aggregator
How to combine the results of individual, but related messages so that they can be
processed as a whole?
• Resequencer
How to get a stream of related but out-of-sequence messages back into the correct
order?
• Dead Letter Channel
What will the messaging system do with a message it cannot deliver?
How it works
• Camel Core
Contains all the functionality needed to run a Camel application—DSL for
various languages, the routing engine, implementations of EIPs, a
number of data converters, and core components.
• Camel Routes
A route represents a chain of processing steps applied to a message
based on some rules. The route has a beginning defined by the from
endpoint, and one or more processing steps commonly called
"Processors“.
• Camel Context
A dynamic multithread route container, responsible for managing all
aspects of the routing: route lifecycle, message conversions,
configurations, error handling, monitoring, and so on.
Message
A Message in Apache Camel is an implementation of
org.apache.camel Message interface.
Message has four main parts:
• UID
• Header
• Body
• Attachments
Message
Header
Attachment
body
Endpoint
Any producer or consumer in Camel route is an Endpoint.
Consider Camel route as a graph and Endpoint as a Node.
Exchange
A message container and link between producer and consumer
endpoints and hold information about:
• Producer and consumer endpoints
• Message route
• Protocol used
• Any error or exception thrown
Camel Message Routing
• Camel route starts with “from” that act as a consumer. Consumer can of the
following types:
• Polling consumer (fetches messages periodically)
• Event-Driven consumer (listens for events)
• Consumer receives a message from external system.
• Consumer wraps the message in a Camel specific format called Exchange
and starts routing between endpoints.
• Producers are identified by the keyword “to”. Once message received
Producer will:
• Converting exchanges
• Delivering them to other channels
Camel Message Routing
TOFROM
endpoint endpoint
event
pooling
Camel route
exchange
Camel routes using Java
In Java DSL, we create a route by extending RouteBuilder and overriding the
configure method.
public class SampleFileRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("file:data/input?noop=true")
.to("file:data/output");
}
}
Camel Context for Java DSL
final CamelContext camelContext = new DefaultCamelContext();
camelContext.addRoutes(new SampleFileRoute());
camelContext.start();
camelContext.stop();
Camel routes using Spring
In the Spring DSL, we create a route by using Spring configuration.
<camel:camelContext xmlns="http://camel.apache.org/schema/spring">
<camel:route>
<camel:from uri="file:data/input?noop=true" />
<camel:to uri="file:data/output" />
</camel:route>
</camel:camelContext>
Camel Context for Spring DSL
final AbstractApplicationContext springContext = new
ClassPathXmlApplicationContext(“camel-spring-context.xml");
springContext.start();
springContext.stop();
springContext.close();

More Related Content

What's hot

Integrating microservices with apache camel on kubernetes
Integrating microservices with apache camel on kubernetesIntegrating microservices with apache camel on kubernetes
Integrating microservices with apache camel on kubernetesClaus Ibsen
 
MuleSoft Sizing Guidelines - VirtualMuleys
MuleSoft Sizing Guidelines - VirtualMuleysMuleSoft Sizing Guidelines - VirtualMuleys
MuleSoft Sizing Guidelines - VirtualMuleysAngel Alberici
 
Apache Camel K - Copenhagen
Apache Camel K - CopenhagenApache Camel K - Copenhagen
Apache Camel K - CopenhagenClaus Ibsen
 
Introduction To Apache Camel
Introduction To Apache CamelIntroduction To Apache Camel
Introduction To Apache CamelKnoldus Inc.
 
Serverless integration with Knative and Apache Camel on Kubernetes
Serverless integration with Knative and Apache Camel on KubernetesServerless integration with Knative and Apache Camel on Kubernetes
Serverless integration with Knative and Apache Camel on KubernetesClaus Ibsen
 
Integrating systems in the age of Quarkus and Camel
Integrating systems in the age of Quarkus and CamelIntegrating systems in the age of Quarkus and Camel
Integrating systems in the age of Quarkus and CamelClaus Ibsen
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache CamelKnoldus Inc.
 
Camel Day Italy 2021 - What's new in Camel 3
Camel Day Italy 2021 - What's new in Camel 3Camel Day Italy 2021 - What's new in Camel 3
Camel Day Italy 2021 - What's new in Camel 3Claus Ibsen
 
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...Claus Ibsen
 
CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton Araf Karsh Hamid
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudEberhard Wolff
 
Helm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesHelm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesAlexei Ledenev
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQDmitriy Samovskiy
 
Istio Service Mesh for Developers and Platform Engineers
Istio Service Mesh for Developers and Platform EngineersIstio Service Mesh for Developers and Platform Engineers
Istio Service Mesh for Developers and Platform EngineersSaiLinnThu2
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewBob Killen
 
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and Linkerd
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and LinkerdService Mesh with Apache Kafka, Kubernetes, Envoy, Istio and Linkerd
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and LinkerdKai Wähner
 

What's hot (20)

Integrating microservices with apache camel on kubernetes
Integrating microservices with apache camel on kubernetesIntegrating microservices with apache camel on kubernetes
Integrating microservices with apache camel on kubernetes
 
MuleSoft Sizing Guidelines - VirtualMuleys
MuleSoft Sizing Guidelines - VirtualMuleysMuleSoft Sizing Guidelines - VirtualMuleys
MuleSoft Sizing Guidelines - VirtualMuleys
 
Apache Camel K - Copenhagen
Apache Camel K - CopenhagenApache Camel K - Copenhagen
Apache Camel K - Copenhagen
 
Introduction To Apache Camel
Introduction To Apache CamelIntroduction To Apache Camel
Introduction To Apache Camel
 
Serverless integration with Knative and Apache Camel on Kubernetes
Serverless integration with Knative and Apache Camel on KubernetesServerless integration with Knative and Apache Camel on Kubernetes
Serverless integration with Knative and Apache Camel on Kubernetes
 
Helm intro
Helm introHelm intro
Helm intro
 
Integrating systems in the age of Quarkus and Camel
Integrating systems in the age of Quarkus and CamelIntegrating systems in the age of Quarkus and Camel
Integrating systems in the age of Quarkus and Camel
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
Cloudhub 2.0
Cloudhub 2.0Cloudhub 2.0
Cloudhub 2.0
 
Camel Day Italy 2021 - What's new in Camel 3
Camel Day Italy 2021 - What's new in Camel 3Camel Day Italy 2021 - What's new in Camel 3
Camel Day Italy 2021 - What's new in Camel 3
 
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
Cloud-Native Integration with Apache Camel on Kubernetes (Copenhagen October ...
 
CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Helm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesHelm - Application deployment management for Kubernetes
Helm - Application deployment management for Kubernetes
 
Managing APIs with MuleSoft
Managing APIs with MuleSoftManaging APIs with MuleSoft
Managing APIs with MuleSoft
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
 
Istio Service Mesh for Developers and Platform Engineers
Istio Service Mesh for Developers and Platform EngineersIstio Service Mesh for Developers and Platform Engineers
Istio Service Mesh for Developers and Platform Engineers
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive Overview
 
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and Linkerd
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and LinkerdService Mesh with Apache Kafka, Kubernetes, Envoy, Istio and Linkerd
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and Linkerd
 

Viewers also liked

Xke - Introduction to Apache Camel
Xke - Introduction to Apache CamelXke - Introduction to Apache Camel
Xke - Introduction to Apache CamelAlexis Kinsella
 
Taking Apache Camel For a Ride
Taking Apache Camel For a RideTaking Apache Camel For a Ride
Taking Apache Camel For a RideBruce Snyder
 
Workshop apache camel
Workshop apache camelWorkshop apache camel
Workshop apache camelMarko Seifert
 
Integration made easy with Apache Camel
Integration made easy with Apache CamelIntegration made easy with Apache Camel
Integration made easy with Apache CamelRosen Spasov
 
Taking Apache Camel For A Ride
Taking Apache Camel For A RideTaking Apache Camel For A Ride
Taking Apache Camel For A RideBruce Snyder
 
«Spring Integration as Integration Patterns Provider»
«Spring Integration as Integration Patterns Provider»«Spring Integration as Integration Patterns Provider»
«Spring Integration as Integration Patterns Provider»IT Weekend
 
Apache Camel Lifecycle
Apache Camel LifecycleApache Camel Lifecycle
Apache Camel LifecycleIlya Lapitan
 
Wild Flies and a Camel Java EE Integration Stories
Wild Flies and a Camel Java EE Integration StoriesWild Flies and a Camel Java EE Integration Stories
Wild Flies and a Camel Java EE Integration StoriesMarkus Eisele
 
Apache Camel & The Art of Entreprise Integration
Apache Camel & The Art of Entreprise IntegrationApache Camel & The Art of Entreprise Integration
Apache Camel & The Art of Entreprise IntegrationAbdellatif BOUCHAMA
 
Apache Camel
Apache CamelApache Camel
Apache CamelGenevaJUG
 
Self Repairing Tree Topology Enabling Content Based Routing In Local Area Ne...
Self Repairing Tree Topology Enabling  Content Based Routing In Local Area Ne...Self Repairing Tree Topology Enabling  Content Based Routing In Local Area Ne...
Self Repairing Tree Topology Enabling Content Based Routing In Local Area Ne...ncct
 
Messaging with Spring Integration
Messaging with Spring IntegrationMessaging with Spring Integration
Messaging with Spring IntegrationVadim Mikhnevych
 
Spring Integration and EIP Introduction
Spring Integration and EIP IntroductionSpring Integration and EIP Introduction
Spring Integration and EIP IntroductionIwein Fuld
 
Elegant Systems Integration w/ Apache Camel
Elegant Systems Integration w/ Apache CamelElegant Systems Integration w/ Apache Camel
Elegant Systems Integration w/ Apache CamelPradeep Elankumaran
 
Consuming External Content and Enriching Content with Apache Camel
Consuming External Content and Enriching Content with Apache CamelConsuming External Content and Enriching Content with Apache Camel
Consuming External Content and Enriching Content with Apache Cameltherealgaston
 
Event Driven Architecture with Apache Camel
Event Driven Architecture with Apache CamelEvent Driven Architecture with Apache Camel
Event Driven Architecture with Apache Camelprajods
 
Apache Camel - The integration library
Apache Camel - The integration libraryApache Camel - The integration library
Apache Camel - The integration libraryClaus Ibsen
 
Integration Patterns With Spring integration
Integration Patterns With Spring integrationIntegration Patterns With Spring integration
Integration Patterns With Spring integrationEldad Dor
 

Viewers also liked (20)

Xke - Introduction to Apache Camel
Xke - Introduction to Apache CamelXke - Introduction to Apache Camel
Xke - Introduction to Apache Camel
 
Cbr
CbrCbr
Cbr
 
Taking Apache Camel For a Ride
Taking Apache Camel For a RideTaking Apache Camel For a Ride
Taking Apache Camel For a Ride
 
Workshop apache camel
Workshop apache camelWorkshop apache camel
Workshop apache camel
 
Integration made easy with Apache Camel
Integration made easy with Apache CamelIntegration made easy with Apache Camel
Integration made easy with Apache Camel
 
Taking Apache Camel For A Ride
Taking Apache Camel For A RideTaking Apache Camel For A Ride
Taking Apache Camel For A Ride
 
«Spring Integration as Integration Patterns Provider»
«Spring Integration as Integration Patterns Provider»«Spring Integration as Integration Patterns Provider»
«Spring Integration as Integration Patterns Provider»
 
Apache Camel Lifecycle
Apache Camel LifecycleApache Camel Lifecycle
Apache Camel Lifecycle
 
Wild Flies and a Camel Java EE Integration Stories
Wild Flies and a Camel Java EE Integration StoriesWild Flies and a Camel Java EE Integration Stories
Wild Flies and a Camel Java EE Integration Stories
 
Apache Camel & The Art of Entreprise Integration
Apache Camel & The Art of Entreprise IntegrationApache Camel & The Art of Entreprise Integration
Apache Camel & The Art of Entreprise Integration
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
Self Repairing Tree Topology Enabling Content Based Routing In Local Area Ne...
Self Repairing Tree Topology Enabling  Content Based Routing In Local Area Ne...Self Repairing Tree Topology Enabling  Content Based Routing In Local Area Ne...
Self Repairing Tree Topology Enabling Content Based Routing In Local Area Ne...
 
Messaging with Spring Integration
Messaging with Spring IntegrationMessaging with Spring Integration
Messaging with Spring Integration
 
Spring Integration and EIP Introduction
Spring Integration and EIP IntroductionSpring Integration and EIP Introduction
Spring Integration and EIP Introduction
 
Elegant Systems Integration w/ Apache Camel
Elegant Systems Integration w/ Apache CamelElegant Systems Integration w/ Apache Camel
Elegant Systems Integration w/ Apache Camel
 
Consuming External Content and Enriching Content with Apache Camel
Consuming External Content and Enriching Content with Apache CamelConsuming External Content and Enriching Content with Apache Camel
Consuming External Content and Enriching Content with Apache Camel
 
Event Driven Architecture with Apache Camel
Event Driven Architecture with Apache CamelEvent Driven Architecture with Apache Camel
Event Driven Architecture with Apache Camel
 
Tml for Ruby on Rails
Tml for Ruby on RailsTml for Ruby on Rails
Tml for Ruby on Rails
 
Apache Camel - The integration library
Apache Camel - The integration libraryApache Camel - The integration library
Apache Camel - The integration library
 
Integration Patterns With Spring integration
Integration Patterns With Spring integrationIntegration Patterns With Spring integration
Integration Patterns With Spring integration
 

Similar to An introduction to Apache Camel

Similar to An introduction to Apache Camel (20)

Introduction of Apache Camel
Introduction of Apache CamelIntroduction of Apache Camel
Introduction of Apache Camel
 
Mule esb and_relevant_components
Mule esb and_relevant_componentsMule esb and_relevant_components
Mule esb and_relevant_components
 
Integration Solution Patterns
Integration Solution Patterns Integration Solution Patterns
Integration Solution Patterns
 
Red Hat Open Day JBoss Fuse
Red Hat Open Day JBoss FuseRed Hat Open Day JBoss Fuse
Red Hat Open Day JBoss Fuse
 
Srilekha mule esb
Srilekha mule esbSrilekha mule esb
Srilekha mule esb
 
Apache Camel interview Questions and Answers
Apache Camel interview Questions and AnswersApache Camel interview Questions and Answers
Apache Camel interview Questions and Answers
 
Mule overview-ppt
Mule overview-pptMule overview-ppt
Mule overview-ppt
 
Mule esb naveen
Mule esb naveenMule esb naveen
Mule esb naveen
 
Niranjan mule esb
Niranjan mule esbNiranjan mule esb
Niranjan mule esb
 
Mule overview
Mule overviewMule overview
Mule overview
 
EIP In Practice
EIP In PracticeEIP In Practice
EIP In Practice
 
Mule esb kranthi
Mule esb kranthiMule esb kranthi
Mule esb kranthi
 
Mule
MuleMule
Mule
 
Mule
MuleMule
Mule
 
Sai mule esb batch
Sai mule esb batchSai mule esb batch
Sai mule esb batch
 
Ashok mule esb
Ashok mule esbAshok mule esb
Ashok mule esb
 
Mule slides
Mule slides Mule slides
Mule slides
 
Mule esb kranthi
Mule esb kranthiMule esb kranthi
Mule esb kranthi
 
Esb process
Esb processEsb process
Esb process
 
Mule esb
Mule esb Mule esb
Mule esb
 

Recently uploaded

Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 

Recently uploaded (20)

20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 

An introduction to Apache Camel

  • 2. Problem Statement Creating a single, big application to run a complete business is next to impossible. Enterprises are typically comprised of discrete applications. • Custom built • Acquired from 3rd party • Legacy systems • External systems Integrating different applications to work together is a big challenge.
  • 3. Credit Services Risk Management Services Direct Agents Internet Business rules Management systems Rule Repository Compliance Policies Reporting Back office Loan Approval System
  • 4. Solution Enterprise Application Integration - EAI Enterprise Application Integration is the use of software and computer systems architectural principles to integrate a set of enterprise software applications using Enterprise Integration Patterns.
  • 5. Available solutions • Custom solution • Enterprise Service Bus • Mule ESB • Service Mix ESB • JBoss ESB • Enterprise Integration Frameworks • Spring Integration • Apache Camel
  • 6. What is Camel Apache Camel is a Java based open-source integration framework based on Enterprise Integration Patterns.
  • 7. What is Camel cont. Apache Camel allows your applications to accomplish • Message routing between endpoints • Message transformation • Protocol mediation Camel use the established Enterprise Integration Patterns and out-of-the-box adapters with a highly expressive Domain Specific Language (Java, Spring XML, Scala and Groovy).
  • 8. Why Apache Camel • Routing and mediation engine • Domain-specific language (DSL) • Extensive component library • Modular and pluggable architecture • Easy configuration • Conventions over configuration paradigm is followed. • Automatic type converters • Many built in type converters • Data Format Converters • Data Type Converters • Create your own converters
  • 9. Routing and Mediation Engine • A routing engine moves the message around based on the routing configuration. • Routes are configured using DSL. from(“step 1").to(“step 2"); • Camel route starts with “from” that act as a consumer. • Once data is received by consumer • A message will be created • Message is transported to Camel route
  • 10. Steps involves in message routing • Message received by Consumer • Message transformation • Message format validation • Enriching message contents • Message splitting and aggregating • Activity logging
  • 11. Domain Specific Language (DSL) Camel routes are created using a Domain Specific Language (DSL), specifically tailored for application integration. Camel DSLs are: • High-level languages • Allow us to easily create routes • Combining various processing steps • No need for any low-level implementations
  • 12. DSL Examples • Java DSL from("file:data/input").to("file:data/output"); • Spring DSL <camel:route> <camel:from uri="file:data/input?noop=true" /> <camel:to uri="file:data/output" /> </camel:route> • Scala DSL from "file:data/input" -> " file:data/output"
  • 13. Extensive component library Camel offers library of components that are modeled after Enterprise Integration Patterns. • Bean Component • File Component • JMS and ActiveMQ Component • CXF Component • Log component • And many more… Compete list of components can be found here. http://camel.apache.org/components.html
  • 14. Enterprise Integration Patterns To help deal with the complexity of integration problems, the Enterprise Integration Patterns are the standard way to describe, document and implement complex integration problems. All integration patterns can be found in the book Enterprise Integration Patterns by Gregor Hohpe and Bobby Woolf published in January 2004.
  • 15. Essential Integration Patterns • Pipes and Filters How to perform complex processing on a message while maintaining independence and flexibility? • Message Router How to decouple individual processing steps so that messages can be passed to different filters depending on a set of conditions? • Message Translator How can systems using different data formats communicate with each other using messaging? • Message Filter How can a component avoid receiving unwanted messages?
  • 16. Essential Integration Patterns cont. • Splitter How to split the message into pieces and process them individually. • Aggregator How to combine the results of individual, but related messages so that they can be processed as a whole? • Resequencer How to get a stream of related but out-of-sequence messages back into the correct order? • Dead Letter Channel What will the messaging system do with a message it cannot deliver?
  • 17. How it works • Camel Core Contains all the functionality needed to run a Camel application—DSL for various languages, the routing engine, implementations of EIPs, a number of data converters, and core components. • Camel Routes A route represents a chain of processing steps applied to a message based on some rules. The route has a beginning defined by the from endpoint, and one or more processing steps commonly called "Processors“. • Camel Context A dynamic multithread route container, responsible for managing all aspects of the routing: route lifecycle, message conversions, configurations, error handling, monitoring, and so on.
  • 18. Message A Message in Apache Camel is an implementation of org.apache.camel Message interface. Message has four main parts: • UID • Header • Body • Attachments Message Header Attachment body
  • 19. Endpoint Any producer or consumer in Camel route is an Endpoint. Consider Camel route as a graph and Endpoint as a Node. Exchange A message container and link between producer and consumer endpoints and hold information about: • Producer and consumer endpoints • Message route • Protocol used • Any error or exception thrown
  • 20. Camel Message Routing • Camel route starts with “from” that act as a consumer. Consumer can of the following types: • Polling consumer (fetches messages periodically) • Event-Driven consumer (listens for events) • Consumer receives a message from external system. • Consumer wraps the message in a Camel specific format called Exchange and starts routing between endpoints. • Producers are identified by the keyword “to”. Once message received Producer will: • Converting exchanges • Delivering them to other channels
  • 21. Camel Message Routing TOFROM endpoint endpoint event pooling Camel route exchange
  • 22. Camel routes using Java In Java DSL, we create a route by extending RouteBuilder and overriding the configure method. public class SampleFileRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:data/input?noop=true") .to("file:data/output"); } }
  • 23. Camel Context for Java DSL final CamelContext camelContext = new DefaultCamelContext(); camelContext.addRoutes(new SampleFileRoute()); camelContext.start(); camelContext.stop();
  • 24. Camel routes using Spring In the Spring DSL, we create a route by using Spring configuration. <camel:camelContext xmlns="http://camel.apache.org/schema/spring"> <camel:route> <camel:from uri="file:data/input?noop=true" /> <camel:to uri="file:data/output" /> </camel:route> </camel:camelContext>
  • 25. Camel Context for Spring DSL final AbstractApplicationContext springContext = new ClassPathXmlApplicationContext(“camel-spring-context.xml"); springContext.start(); springContext.stop(); springContext.close();