SlideShare a Scribd company logo
1 of 20
Apache Camel Overview
Open Source Integration and Messaging




Marcelo Jabali
Sr. Solutions Consultant
Dec., 2011
                                                                                                                 A Progress Software Company
1   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.            A Progress Software Company
Agenda


       Apache Camel Overview
       Architecture
       Routes, Endpoints, Components
       Deployment Options




2       Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
About Me


                                                                                                     Marcelo Jabali
                                                                                                     Sr. Solutions Consultant

                                                                                                     marcelo@fusesource.com

                                                                                                     marcelojabali.blogspot.com

                                                                                                     mjabali

                                                                                                     linkedin.com/in/jabali


3   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.        A Progress Software Company
Apache Camel


                                                                                            Apache Camel is a
                                                                                             powerful Open
                                                                                             Source Integration
                                                                                             Framework based on
                                                                                             known Enterprise
                                                                                             Integration Patterns




                                                                               http://enterpriseintegrationpatterns.com/

4   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
Apache Camel - Patterns


     50+ Enterprise Integration Patterns




                                            http://camel.apache.org/eip
5      Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
Apache Camel – Components, Data Formats and
Languages

     80 Components (activemq, bean, cxf, file, ftp, hibernate, jdbc,
      ibatis, jms, jetty, mina, netty, timer, xslt, etc)
       • http://camel.apache.org/components.html


     19 Data Formats (csv, serialization, zip, hl7, soap, jaxb, etc)
       • http://camel.apache.org/data-format.html


     15 Expression Languages (EL, Simple, XQuery, Xpath,
      JavaScript, Ruby, Python, PHP, etc)
       • http://camel.apache.org/languages.html




6      Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
Apache Camel - Architecture




7   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
What is a Camel Route?


     A Route is the step-by-step movement of a message:
       • From a “listening” endpoint in the role of consumer
       • Through a processing component - enterprise integration pattern,
         processor, interceptor, etc. (optional)
       • To a target endpoint in the role of producer
     May involve any number of processing components that
      modify the original message and/or redirect it
     An application developer specifies routes using:
       • Spring configuration files
       • Java Domain Specific Language (DSL)




8      Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
Apache Camel – DSL (Domain Specific Language)


     Camel provides an embedded DSL (in Java, Spring or Scala) for
      implementing enterprise integration patterns
       • The DSL uses URIs to define endpoints which are combined to
         generate routes (integration flows)




9      Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
Apache Camel - Components


  A Component is essentially a factory of Endpoint instances
  +80 Components available
            activemq                                    cxf                                  rss                   sql

     mail/imap/pop3                                   cxfrs                               snmp                    timer

                amqp                               dataset                          ftp/ftps/sftp                  jbi
                 atom                                 db4o                              velocity                   jcr
                 bean                                direct                               restlet                 jdbc
                  ldap                                  ejb                           hibernate                   jetty
              browse                                xquery                                   hl7                  jms
                cache                                quartz                                 http                  jmx
                 mock                                 exec                                ibatis                  jpa
                 netty                                  file                                  irc                 xslt

10   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.           A Progress Software Company
Apache Camel - Endpoints


  An Endpoint is an instance of the component that can
   create or receive messages, for example, an FTP server, a
   Web Service, or a JMS broker
  Camel allows you to specifiy endpoints using simple URIs
     • ftp://john@localhost/ftp?password=xxx
     • activemq:queue:MyQueue


                             Camel Route


              FTP                                                                                                            JMS



                             Consumer                                  Processor                                  Producer


11   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.               A Progress Software Company
Apache Camel - Consumers and Producers


  Message Consumers and Producers are created from
   endpoints
     • Some endpoint technologies can create producers and
       consumers, others support the creation of either a producer or a
       consumer
ftp://john@localhost/ftp?password=xxx
                                   Camel Route


                   FTP                                                                                                       JMS



                                  Consumer                                  Processor                             Producer

                                                                                 activemq:queue:MyQueue
12   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.              A Progress Software Company
Apache Camel - Sample Route


  Typical scenario: "read an XML file from an FTP server,
   process it using XSLT, and then send it to a JMS queue”
     • It's natural to consider an FTP consumer that 'consumes' the
       message…
     • … which gets sent to a 'processor' for transformation …
     • … which gets sent to a JMS message producer for placement on
       the queue


                             Camel Route


              FTP                                                                                                            JMS



                             Consumer                                  Processor                                  Producer

13   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.               A Progress Software Company
Apache Camel – Sample Route


  Java DSL
     from("ftp://john@localhost/ftp?password=xxx")
        .to("xslt:MyTransform.xslt")
        .to("activemq:queue:MyQueue")


                              Camel Route


               FTP                                                                                                            JMS



                              Consumer                                  Processor                                  Producer




14    Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.               A Progress Software Company
Apache Camel – Sample Route


  Spring XML DSL
 <camelContext id=“camel”
         xmlns=“http://activemq.apache.org/camel/schema/spring”>
         <route>
                 <from uri=“ftp://john@localhost/ftp?password=xxx”/>
                 <to uri=“xslt:MyTransform.xslt”/>
                 <to uri=“activemq:queue:MyQueue”/>
         </route>
 </camelContext>



  Clean Integration with Spring Beans
 <bean id=“activemq”
 class=“org.apache.activemq.camel.component.ActiveMQComponent”>
         <property name=“brokerURL” value=“tcp://localhost:61616”/>
 </bean>


15   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
Apache Camel – Spring Bean Integration


  Spring Bean as Message Translator




                   from("activemq:queue:Incoming”).
                     beanRef("myBeanName", "someMethod").
                       to("activemq:Outgoing");


                       public class Foo {
                             public String someMethod(String name) {
                               return “Hello “ + name;
                             }
                       }

16   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
Typical Camel Route Development Process


  Use a Maven archetype to generate an outline project

  Edit the POM to include additional dependencies

  Add your Java code into src/main/java, and/or Spring
   configuration to src/main/resources/META-INF/spring

  Add instructions to the Maven Felix plugin, to assist in the generation
   of OSGi manifest information

  Test using the Camel Maven plugin
           mvn camel:run

  Deploy into the Apache ServiceMix OSGi container
     • Drop into deploy/ directory (pre-production testing)
     • Install a bundle/feature from a maven repository (production environment)
17   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
Camel Testing Options


  Test Kit
     •     camel-test JAR (JUnit)
     •     camel-testng JAR (TestNG)
     •     Supports Spring
     •     Easy to test
     •     Quick prototyping




18   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.   A Progress Software Company
Camel Deployment Options


  Deployment Strategy                                                                                        Common Containers
     • No Container dependency
     • Lightweight                                                                                            Apache ServiceMix
                                                                                                              Apache ActiveMQ
     • Embeddable                                                                                             Apache Tomcat
  Deployment Options                                                                                         Jetty
                                                                                                              JBoss
     •     Standalone                                                                                         IBM WebSphere
     •     WAR                                                                                                Oracle WebLogic
     •     Spring                                                                                             Oracle OC4j
                                                                                                              Glassfish
     •     JEE                                                                                                Google App Engine
     •     OSGi                                                                                               Amazon EC2
     •     Cloud                                                                                              ... others




19   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.                   A Progress Software Company
Thanks!


No vendor lock-in
    Free to redistribute
         Enterprise class                                                                                         A Progress Software Company
20   Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved.            A Progress Software Company

More Related Content

What's hot

Service-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMixService-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMix
Bruce Snyder
 
DataMapper on Infinispan
DataMapper on InfinispanDataMapper on Infinispan
DataMapper on Infinispan
Lance Ball
 
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e RubyTorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
Bruno Oliveira
 
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011
tobiascrawley
 
Torquebox @ Raleigh.rb - April 2011
Torquebox @ Raleigh.rb - April 2011Torquebox @ Raleigh.rb - April 2011
Torquebox @ Raleigh.rb - April 2011
tobiascrawley
 
TorqueBox - When Java meets Ruby
TorqueBox - When Java meets RubyTorqueBox - When Java meets Ruby
TorqueBox - When Java meets Ruby
Bruno Oliveira
 

What's hot (20)

TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
 
First Day With J Ruby
First Day With J RubyFirst Day With J Ruby
First Day With J Ruby
 
Service-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMixService-Oriented Integration With Apache ServiceMix
Service-Oriented Integration With Apache ServiceMix
 
Simplify your integrations with Apache Camel
Simplify your integrations with Apache CamelSimplify your integrations with Apache Camel
Simplify your integrations with Apache Camel
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneider
 
DataMapper on Infinispan
DataMapper on InfinispanDataMapper on Infinispan
DataMapper on Infinispan
 
Service Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMixService Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMix
 
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e RubyTorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
 
Camel and JBoss
Camel and JBossCamel and JBoss
Camel and JBoss
 
When Ruby Meets Java - The Power of Torquebox
When Ruby Meets Java - The Power of TorqueboxWhen Ruby Meets Java - The Power of Torquebox
When Ruby Meets Java - The Power of Torquebox
 
Cloud Foundry, Spring and Vaadin
Cloud Foundry, Spring and VaadinCloud Foundry, Spring and Vaadin
Cloud Foundry, Spring and Vaadin
 
Running Ruby on Solaris (RubyKaigi 2015, 12/Dec/2015)
Running Ruby on Solaris (RubyKaigi 2015, 12/Dec/2015)Running Ruby on Solaris (RubyKaigi 2015, 12/Dec/2015)
Running Ruby on Solaris (RubyKaigi 2015, 12/Dec/2015)
 
Security Goodness with Ruby on Rails
Security Goodness with Ruby on RailsSecurity Goodness with Ruby on Rails
Security Goodness with Ruby on Rails
 
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011
 
RESTful web service with JBoss Fuse
RESTful web service with JBoss FuseRESTful web service with JBoss Fuse
RESTful web service with JBoss Fuse
 
W-JAX 2011: OSGi with Apache Karaf
W-JAX 2011: OSGi with Apache KarafW-JAX 2011: OSGi with Apache Karaf
W-JAX 2011: OSGi with Apache Karaf
 
Crash course to the Apache Camel
Crash course to the Apache CamelCrash course to the Apache Camel
Crash course to the Apache Camel
 
Torquebox @ Raleigh.rb - April 2011
Torquebox @ Raleigh.rb - April 2011Torquebox @ Raleigh.rb - April 2011
Torquebox @ Raleigh.rb - April 2011
 
TorqueBox - When Java meets Ruby
TorqueBox - When Java meets RubyTorqueBox - When Java meets Ruby
TorqueBox - When Java meets Ruby
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from Oredev
 

Viewers also liked

Viewers also liked (12)

Getting started with Apache Camel presentation at BarcelonaJUG, january 2014
Getting started with Apache Camel presentation at BarcelonaJUG, january 2014Getting started with Apache Camel presentation at BarcelonaJUG, january 2014
Getting started with Apache Camel presentation at BarcelonaJUG, january 2014
 
Microservices: lessons from the trenches
Microservices: lessons from the trenchesMicroservices: lessons from the trenches
Microservices: lessons from the trenches
 
Event Driven Architecture with Apache Camel
Event Driven Architecture with Apache CamelEvent Driven Architecture with Apache Camel
Event Driven Architecture with Apache Camel
 
Oracle OSB Tutorial 2
Oracle OSB Tutorial 2Oracle OSB Tutorial 2
Oracle OSB Tutorial 2
 
HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket Introduction
 
Enterprise Integration Patterns Revisited (EIP, Apache Camel, Talend ESB)
Enterprise Integration Patterns Revisited (EIP, Apache Camel, Talend ESB)Enterprise Integration Patterns Revisited (EIP, Apache Camel, Talend ESB)
Enterprise Integration Patterns Revisited (EIP, Apache Camel, Talend ESB)
 
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
 
Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink
 
Where and when to use the Oracle Service Bus (OSB)
Where and when to use the Oracle Service Bus (OSB)Where and when to use the Oracle Service Bus (OSB)
Where and when to use the Oracle Service Bus (OSB)
 
How to choose the right Integration Framework - Apache Camel (JBoss, Talend),...
How to choose the right Integration Framework - Apache Camel (JBoss, Talend),...How to choose the right Integration Framework - Apache Camel (JBoss, Talend),...
How to choose the right Integration Framework - Apache Camel (JBoss, Talend),...
 
ESB Overview
ESB OverviewESB Overview
ESB Overview
 
Oracle OSB Tutorial 1
Oracle OSB Tutorial 1Oracle OSB Tutorial 1
Oracle OSB Tutorial 1
 

Similar to Apache camel overview dec 2011

(Oleg zhurakousky)spring integration-scala-intro
(Oleg zhurakousky)spring integration-scala-intro(Oleg zhurakousky)spring integration-scala-intro
(Oleg zhurakousky)spring integration-scala-intro
Skills Matter Talks
 
Leverage Enterprise Integration Patterns with Apache Camel and Twitter
Leverage Enterprise Integration Patterns with Apache Camel and TwitterLeverage Enterprise Integration Patterns with Apache Camel and Twitter
Leverage Enterprise Integration Patterns with Apache Camel and Twitter
Bruno Borges
 
Shake Hooves With BeEF - OWASP AppSec APAC 2012
Shake Hooves With BeEF - OWASP AppSec APAC 2012Shake Hooves With BeEF - OWASP AppSec APAC 2012
Shake Hooves With BeEF - OWASP AppSec APAC 2012
Christian Frichot
 
Jazoon2010 - Edgar Silva - Open source SOA on Steroids
Jazoon2010 - Edgar Silva - Open source SOA on SteroidsJazoon2010 - Edgar Silva - Open source SOA on Steroids
Jazoon2010 - Edgar Silva - Open source SOA on Steroids
Edgar Silva
 

Similar to Apache camel overview dec 2011 (20)

Introducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template EngineIntroducing Scalate, the Scala Template Engine
Introducing Scalate, the Scala Template Engine
 
Fusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliardFusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliard
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
 
(Oleg zhurakousky)spring integration-scala-intro
(Oleg zhurakousky)spring integration-scala-intro(Oleg zhurakousky)spring integration-scala-intro
(Oleg zhurakousky)spring integration-scala-intro
 
Leverage Enterprise Integration Patterns with Apache Camel and Twitter
Leverage Enterprise Integration Patterns with Apache Camel and TwitterLeverage Enterprise Integration Patterns with Apache Camel and Twitter
Leverage Enterprise Integration Patterns with Apache Camel and Twitter
 
Easy Integration with Apache Camel and Fuse IDE
Easy Integration with Apache Camel and Fuse IDEEasy Integration with Apache Camel and Fuse IDE
Easy Integration with Apache Camel and Fuse IDE
 
Camel overview
Camel overview Camel overview
Camel overview
 
JVMs in Containers
JVMs in ContainersJVMs in Containers
JVMs in Containers
 
The Forces Driving Java
The Forces Driving JavaThe Forces Driving Java
The Forces Driving Java
 
Apache Commons Overview
Apache Commons OverviewApache Commons Overview
Apache Commons Overview
 
03.eGovFrame Runtime Environment Training Book Supplement
03.eGovFrame Runtime Environment Training Book Supplement03.eGovFrame Runtime Environment Training Book Supplement
03.eGovFrame Runtime Environment Training Book Supplement
 
Shake Hooves With BeEF - OWASP AppSec APAC 2012
Shake Hooves With BeEF - OWASP AppSec APAC 2012Shake Hooves With BeEF - OWASP AppSec APAC 2012
Shake Hooves With BeEF - OWASP AppSec APAC 2012
 
Apache Camel interview Questions and Answers
Apache Camel interview Questions and AnswersApache Camel interview Questions and Answers
Apache Camel interview Questions and Answers
 
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
Introducing JSR-283
Introducing JSR-283Introducing JSR-283
Introducing JSR-283
 
Java 8
Java 8Java 8
Java 8
 
What's new in Java 8
What's new in Java 8What's new in Java 8
What's new in Java 8
 
Web servicesoverview
Web servicesoverviewWeb servicesoverview
Web servicesoverview
 
Jazoon2010 - Edgar Silva - Open source SOA on Steroids
Jazoon2010 - Edgar Silva - Open source SOA on SteroidsJazoon2010 - Edgar Silva - Open source SOA on Steroids
Jazoon2010 - Edgar Silva - Open source SOA on Steroids
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Apache camel overview dec 2011

  • 1. Apache Camel Overview Open Source Integration and Messaging Marcelo Jabali Sr. Solutions Consultant Dec., 2011 A Progress Software Company 1 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 2. Agenda  Apache Camel Overview  Architecture  Routes, Endpoints, Components  Deployment Options 2 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 3. About Me Marcelo Jabali Sr. Solutions Consultant marcelo@fusesource.com marcelojabali.blogspot.com mjabali linkedin.com/in/jabali 3 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 4. Apache Camel  Apache Camel is a powerful Open Source Integration Framework based on known Enterprise Integration Patterns http://enterpriseintegrationpatterns.com/ 4 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 5. Apache Camel - Patterns  50+ Enterprise Integration Patterns http://camel.apache.org/eip 5 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 6. Apache Camel – Components, Data Formats and Languages  80 Components (activemq, bean, cxf, file, ftp, hibernate, jdbc, ibatis, jms, jetty, mina, netty, timer, xslt, etc) • http://camel.apache.org/components.html  19 Data Formats (csv, serialization, zip, hl7, soap, jaxb, etc) • http://camel.apache.org/data-format.html  15 Expression Languages (EL, Simple, XQuery, Xpath, JavaScript, Ruby, Python, PHP, etc) • http://camel.apache.org/languages.html 6 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 7. Apache Camel - Architecture 7 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 8. What is a Camel Route?  A Route is the step-by-step movement of a message: • From a “listening” endpoint in the role of consumer • Through a processing component - enterprise integration pattern, processor, interceptor, etc. (optional) • To a target endpoint in the role of producer  May involve any number of processing components that modify the original message and/or redirect it  An application developer specifies routes using: • Spring configuration files • Java Domain Specific Language (DSL) 8 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 9. Apache Camel – DSL (Domain Specific Language)  Camel provides an embedded DSL (in Java, Spring or Scala) for implementing enterprise integration patterns • The DSL uses URIs to define endpoints which are combined to generate routes (integration flows) 9 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 10. Apache Camel - Components  A Component is essentially a factory of Endpoint instances  +80 Components available activemq cxf rss sql mail/imap/pop3 cxfrs snmp timer amqp dataset ftp/ftps/sftp jbi atom db4o velocity jcr bean direct restlet jdbc ldap ejb hibernate jetty browse xquery hl7 jms cache quartz http jmx mock exec ibatis jpa netty file irc xslt 10 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 11. Apache Camel - Endpoints  An Endpoint is an instance of the component that can create or receive messages, for example, an FTP server, a Web Service, or a JMS broker  Camel allows you to specifiy endpoints using simple URIs • ftp://john@localhost/ftp?password=xxx • activemq:queue:MyQueue Camel Route FTP JMS Consumer Processor Producer 11 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 12. Apache Camel - Consumers and Producers  Message Consumers and Producers are created from endpoints • Some endpoint technologies can create producers and consumers, others support the creation of either a producer or a consumer ftp://john@localhost/ftp?password=xxx Camel Route FTP JMS Consumer Processor Producer activemq:queue:MyQueue 12 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 13. Apache Camel - Sample Route  Typical scenario: "read an XML file from an FTP server, process it using XSLT, and then send it to a JMS queue” • It's natural to consider an FTP consumer that 'consumes' the message… • … which gets sent to a 'processor' for transformation … • … which gets sent to a JMS message producer for placement on the queue Camel Route FTP JMS Consumer Processor Producer 13 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 14. Apache Camel – Sample Route  Java DSL from("ftp://john@localhost/ftp?password=xxx") .to("xslt:MyTransform.xslt") .to("activemq:queue:MyQueue") Camel Route FTP JMS Consumer Processor Producer 14 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 15. Apache Camel – Sample Route  Spring XML DSL <camelContext id=“camel” xmlns=“http://activemq.apache.org/camel/schema/spring”> <route> <from uri=“ftp://john@localhost/ftp?password=xxx”/> <to uri=“xslt:MyTransform.xslt”/> <to uri=“activemq:queue:MyQueue”/> </route> </camelContext>  Clean Integration with Spring Beans <bean id=“activemq” class=“org.apache.activemq.camel.component.ActiveMQComponent”> <property name=“brokerURL” value=“tcp://localhost:61616”/> </bean> 15 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 16. Apache Camel – Spring Bean Integration  Spring Bean as Message Translator from("activemq:queue:Incoming”). beanRef("myBeanName", "someMethod"). to("activemq:Outgoing"); public class Foo { public String someMethod(String name) { return “Hello “ + name; } } 16 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 17. Typical Camel Route Development Process  Use a Maven archetype to generate an outline project  Edit the POM to include additional dependencies  Add your Java code into src/main/java, and/or Spring configuration to src/main/resources/META-INF/spring  Add instructions to the Maven Felix plugin, to assist in the generation of OSGi manifest information  Test using the Camel Maven plugin mvn camel:run  Deploy into the Apache ServiceMix OSGi container • Drop into deploy/ directory (pre-production testing) • Install a bundle/feature from a maven repository (production environment) 17 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 18. Camel Testing Options  Test Kit • camel-test JAR (JUnit) • camel-testng JAR (TestNG) • Supports Spring • Easy to test • Quick prototyping 18 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 19. Camel Deployment Options  Deployment Strategy Common Containers • No Container dependency • Lightweight Apache ServiceMix Apache ActiveMQ • Embeddable Apache Tomcat  Deployment Options Jetty JBoss • Standalone IBM WebSphere • WAR Oracle WebLogic • Spring Oracle OC4j Glassfish • JEE Google App Engine • OSGi Amazon EC2 • Cloud ... others 19 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company
  • 20. Thanks! No vendor lock-in Free to redistribute Enterprise class A Progress Software Company 20 Copyright © 2011 Progress Software Corporation and/or its subsidiaries or affiliates. All rights reserved. A Progress Software Company

Editor's Notes

  1. Very simplified view of Camel’s architectureComponents are the extension point in Camel to add connectivity to other systems. The core of Camel is very small to keep dependencies low, promote embeddability, etc. and as a result contains only 12 essential components. There are over 60 components outside the core. To expose these systems to the rest of Camel, Components provide an Endpoint interface. By using URIs, you can send or receive messages on Endpoints in a uniform way. For instance, to receive messages from a JMS queue aQueue and send them to a file system directory &quot;c:/tmp&quot;, you could use URIs like &quot;jms:aQueue&quot; and &quot;file:c:\\tmp&quot;.Processors are used to manipulate and mediate messages in between Endpoints. All of the EIPs are defined as Processors or sets of Processors. As of writing, Camel supports 41 patterns from the EIP book, 6 other integration patterns, and many other useful Processors.To wire Processors and Endpoints together, Camel defines a Java DSL. The term DSL is used a bit loosely here as it usually implies the involvement of a compiler or interpreter that can process keywords specific to a particular domain. In Camel, DSL means a fluent Java API that contains methods named like terms from the EIP book
  2. To wire processors and endpoints together to form routes, Camel defines a DSL. The term DSL is used a bit loosely here. In Camel, DSL means a fluent Java API that con- tains methods named for EIP terms.
  3. Camel Demo + FUSE IDE Demo