SlideShare une entreprise Scribd logo
1  sur  35
Implemen(ng	
  Enterprise	
  Integra(on	
  
     Pa3erns	
  through	
  Apache	
  Camel	
  




    James	
  Strachan,	
  Red	
  Hat
     1

Friday, February 8, 2013
Your	
  speaker	
  today


      James	
  Strachan
            • jstrachan@redhat.com
            • twi8er:	
  @jstrachan
            • blog:	
  h8p://macstrac.blogspot.com/
      Senior	
  Consul(ng	
  SoFware	
  Engineer	
  at	
  Red	
  Hat
            • leaders	
  in	
  open	
  source	
  middleware	
  &	
  integra?on
            • we	
  provide	
  training,	
  consul?ng,	
  support,	
  distribu?ons	
  &	
  tools	
  for	
  open	
  
              source	
  integra?on	
  soCware
      Open	
  Source	
  hacker
            • created	
  the	
  Groovy	
  programming	
  language
            • created	
  Apache	
  Camel
            • co-­‐founder	
  of
                        – Apache	
  Ac(veMQ,	
  ServiceMix,	
  Geronimo
                        – Scalate
            • lets	
  not	
  men?on	
  Jelly	
  :)
      2      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
What	
  are	
  Enterprise	
  Integra?on	
  Pa8erns?




      3      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Book	
  by	
  Gregor	
  &	
  Bobby!




      4      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
A	
  selec?on	
  of	
  some	
  of	
  the	
  pa8erns...




      5      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
What	
  is	
  Apache	
  Camel?


                                                                                      http://camel.apache.org/




      6      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
What	
  is	
  Apache	
  Camel?




                   Apache	
  Camel	
  is	
  a	
  Powerful	
  Open	
  Source
                              Integra(on	
  Framework
                                 based	
  on	
  known
                       Enterprise	
  Integra(on	
  Pa3erns	
  

               h3p://camel.apache.org/enterprise-­‐integra(on-­‐pa3erns.html



      7      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Lets	
  look	
  at	
  a	
  pa8ern!




      8      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Message	
  Filter




      9      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Message	
  Filter	
  :	
  XML




             <camelContext xmlns="http://camel.apache.org/schema/spring">
               <route>
                 <from uri="activemq:topic:Quotes"/>
                 <filter>
                   <xpath>/quote/product = ‘widget’</xpath>
                   <to uri="mqseries:WidgetQuotes"/>
                 </filter>
               </route>
             </camelContext>




     10      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Message	
  Filter	
  :	
  Spring	
  XML


          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://www.springframework.org/schema/beans
                 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                 http://camel.apache.org/schema/spring
                 http://camel.apache.org/schema/spring/camel-spring.xsd">

           <camelContext xmlns="http://camel.apache.org/schema/spring">
              <route>
                <from uri="activemq:topic:Quotes"/>
                <filter>
                  <xpath>/quote/product = ‘widget’</xpath>
                  <to uri="mqseries:WidgetQuotes"/>
                </filter>
              </route>
            </camelContext>

          </beans>



     11      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Message	
  Filter	
  :	
  XML




             <camelContext xmlns="http://camel.apache.org/schema/spring">
               <route>
                 <from uri="activemq:topic:Quotes"/>
                 <filter>
                   <xpath>/quote/product = ‘widget’</xpath>
                   <to uri="mqseries:WidgetQuotes"/>
                 </filter>
               </route>
             </camelContext>




     12      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Expressions	
  &	
  Predicates



            15 Expression
            Languages                                                                          BeanShell    Python
                                                                                                   EL        Ruby
                                                                                                 Groovy     Simple
                                                                                               JavaScript    SpEL
                                                                                                JSR 223       SQL
                                                                                                 OGNL        XPath
                                                                                                 MVEL       XQuery
                                                                                                  PHP

     13      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
URIs,	
  Endpoints	
  and	
  Components	
  (120+)


                                              h8p://camel.apache.org/components.html

                                  activemq                                                       cxf       flatpack        jasypt
                       activemq-journal                                                         cxfrs    freemarker      javaspace
                                       amqp                                                    dataset   ftp/ftps/sftp      jbi
                                        atom                                                    db4o         gae            jcr
                                         bean                                                  direct        hdfs          jdbc
                          bean validation                                                        ejb      hibernate        jetty
                                     browse                                                    esper         hl7           jms
                                        cache                                                  event         http          jmx
                                     cometd                                                     exec        ibatis          jpa
                                       crypto                                                    file          irc         jt/400



     14      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
120+	
  components...


                                      language                                             properties          seda               stream

                                            ldap                                               quartz         servlet         string-template

                            mail/imap/pop3                                                     quickfix          sip                test

                                            mina                                                 ref         smooks                timer

                                          mock                                                 restlet         smpp             validation

                                             msv                                                 rmi           snmp              velocity

                                         nagios                                                 rnc      spring-integration         vm

                                           netty                                                 rng      spring-security         xmpp

                                             nmr                                                 rss        spring-ws             xquery

                                         printer                                               scalate          sql                xslt




     15      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Message	
  Filter	
  :	
  XML




             <camelContext xmlns="http://camel.apache.org/schema/spring">
               <route>
                 <from uri="activemq:topic:Quotes"/>
                 <filter>
                   <xpath>/quote/product = ‘widget’</xpath>
                   <to uri="mqseries:WidgetQuotes"/>
                 </filter>
               </route>
             </camelContext>




     16      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Message	
  Filter	
  :	
  Java




      from("activemq:topic:Quotes”).
        filter().xpath("/quote/product = ‘widget’").
          to("mqseries:WidgetQuotes");




     17      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Message	
  Filter	
  :	
  Java	
  Complete



     package com.acme.quotes;

     import org.apache.camel.builder.RouteBuilder;

     public class MyRouteBuilder extends RouteBuilder {

              public void configure() {

                                // forward widget quotes to MQSeries
                                from("activemq:topic:Quotes”).
                                        filter().xpath("/quote/product = ‘widget’").
                                        to("mqseries:WidgetQuotes");
            }
     }

     18      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Message	
  Filter	
  :	
  Scala	
  




                        "direct:a" when(_.in == "<hello/>") {
                            to("mock:a")
                        }




     19      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Create	
  CamelContext	
  in	
  Spring




    <camelContext xmlns="http://camel.apache.org/schema/spring">
      <package>com.acme.quotes</package>
    </camelContext>




     20      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Create	
  CamelContext	
  in	
  Java




           CamelContext context = new DefaultCamelContext();
           context.addRoutes(new MyRouteBuilder());
           context.start();




     21      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
IDE	
  support




             Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
IDE	
  support	
  (XML)




     23      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Recap	
  -­‐	
  core	
  concepts	
  of	
  Camel


         Enterprise	
  Integra(on	
  Pa3erns
         Rou(ng
         Domain	
  Specific	
  Language	
  (DSL)
         Endpoints	
  &	
  URIs
         Predicates	
  &	
  Expressions
         Components	
  (lots	
  of	
  ‘em!)
         Test	
  Kit
     
          	
  	
  	
  	
  	
  	
  	
  and	
  much	
  more	
  ...




     24      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Beans




     25      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Bean	
  as	
  a	
  Message	
  Translator




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




     26      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Bean	
  




     public class Foo {

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




     27      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Binding	
  Beans	
  to	
  Camel	
  Endpoints




          public class Foo {

                @Consume(uri="activemq:cheese")
                public Object onCheese(String name) {
                  ...
                }
          }



     28       Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Binding	
  Method	
  Arguments




          public class Foo {

               public Object onCheese(
                 @XPath("/foo/bar") String name,
                 @Header("JMSCorrelationID") String id) {
                 ...
               }
          }
                                    for	
  more	
  annota(ons	
  see
                                    h3p://camel.apache.org/bean-­‐integra(on.html


     29       Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Sending	
  messages	
  to	
  endpoints




  public class Foo {
    @Produce(uri="activemq:foo.bar")
    ProducerTemplate producer;

           public void doSomething() {
             if (whatever) {
               producer.sendBody("<hello>world!</hello>");
             }
           }
  }


      30     Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Sending	
  messages	
  to	
  endpoints



    public interface MyListener {
        String sayHello(String name);
    }

    public class MyBean {
        @Produce(uri = "activemq:foo")
        protected MyListener producer;

               public void doSomething() {
                   // lets send a message
                   String response = producer.sayHello("James");
               }
    }

     31      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Fastest	
  way	
  to	
  learn....


      Manning	
  top-­‐15	
  year	
  to	
  date	
  (2010)




                                            #10                                                #12
             Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Fuse	
  IDE:	
  the	
  fastest	
  way	
  to	
  get	
  riding!


      free	
  eclipse	
  based	
  tool	
  for	
  Apache	
  Camel	
  &	
  Ac(veMQ	
  etc
            • create	
  projects,	
  edit	
  routes,	
  run	
  stuff,	
  visualise,	
  trace	
  &	
  diagnose




                                                                                   h3p://fusesource.com/
     33      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Summary:	
  Camel	
  rocks


      Ride	
  that	
  Camel
            • h8p://camel.apache.org/
      Download	
  Fuse	
  IDE
            • h8p://fusesource.com
      Buy	
  the	
  book!	
  
      Don’t	
  get	
  the	
  hump!




     34      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013
Any	
  Ques(ons?




                                                                              twi3er:	
  @jstrachan	
  #fusenews
                                                                                  h3p://fusesource.com

     35      Copyright	
  ©	
  2013	
  Red	
  Hat,	
  Inc.	
  All	
  rights	
  reserved.	
  

Friday, February 8, 2013

Contenu connexe

Tendances

Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in JavaJavaDayUA
 
LavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promisesLavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promisesArnaud Héritier
 
LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpathLyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpathAlexis Hassler
 
Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Logico
 
Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)Logico
 
Why JRuby? - RubyConf 2012
Why JRuby? - RubyConf 2012Why JRuby? - RubyConf 2012
Why JRuby? - RubyConf 2012Charles Nutter
 

Tendances (7)

Flavors of Concurrency in Java
Flavors of Concurrency in JavaFlavors of Concurrency in Java
Flavors of Concurrency in Java
 
LavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promisesLavaJUG-Maven 3.x, will it lives up to its promises
LavaJUG-Maven 3.x, will it lives up to its promises
 
LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpathLyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath
 
Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)
 
Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)
 
Why JRuby? - RubyConf 2012
Why JRuby? - RubyConf 2012Why JRuby? - RubyConf 2012
Why JRuby? - RubyConf 2012
 
Download It
Download ItDownload It
Download It
 

En vedette

SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelDomingo Suarez Torres
 
Telerik Kendo UI vs. AngularJS
Telerik Kendo UI vs. AngularJSTelerik Kendo UI vs. AngularJS
Telerik Kendo UI vs. AngularJSRainer Stropek
 
Apache Camel - FUSE community day London 2010 presentation
Apache Camel - FUSE community day London 2010 presentationApache Camel - FUSE community day London 2010 presentation
Apache Camel - FUSE community day London 2010 presentationClaus Ibsen
 
Cloud Native Camel Riding
Cloud Native Camel RidingCloud Native Camel Riding
Cloud Native Camel RidingChristian Posta
 
Chicago Microservices Integration Talk
Chicago Microservices Integration TalkChicago Microservices Integration Talk
Chicago Microservices Integration TalkChristian Posta
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache CamelChristian Posta
 
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO Christian Posta
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYCChristian Posta
 
The hardest part of microservices: your data
The hardest part of microservices: your dataThe hardest part of microservices: your data
The hardest part of microservices: your dataChristian Posta
 

En vedette (13)

SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
 
Telerik Kendo UI vs. AngularJS
Telerik Kendo UI vs. AngularJSTelerik Kendo UI vs. AngularJS
Telerik Kendo UI vs. AngularJS
 
Apache Camel - FUSE community day London 2010 presentation
Apache Camel - FUSE community day London 2010 presentationApache Camel - FUSE community day London 2010 presentation
Apache Camel - FUSE community day London 2010 presentation
 
Cloud Native Camel Riding
Cloud Native Camel RidingCloud Native Camel Riding
Cloud Native Camel Riding
 
Chicago Microservices Integration Talk
Chicago Microservices Integration TalkChicago Microservices Integration Talk
Chicago Microservices Integration Talk
 
Apache Camel - Parte II
Apache Camel - Parte IIApache Camel - Parte II
Apache Camel - Parte II
 
Microservices and APIs
Microservices and APIsMicroservices and APIs
Microservices and APIs
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
 
SOA to Microservices
SOA to MicroservicesSOA to Microservices
SOA to Microservices
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYC
 
The hardest part of microservices: your data
The hardest part of microservices: your dataThe hardest part of microservices: your data
The hardest part of microservices: your data
 
A Microservice Journey
A Microservice JourneyA Microservice Journey
A Microservice Journey
 

Similaire à Implementing EIP with Apache Camel

Camel and JBoss
Camel and JBossCamel and JBoss
Camel and JBossJBug Italy
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache CamelFuseSource.com
 
Apache camel overview dec 2011
Apache camel overview dec 2011Apache camel overview dec 2011
Apache camel overview dec 2011Marcelo Jabali
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...AMD Developer Central
 
IPv6 Matrix presentation for World IPv6 Launch, June 2012
IPv6 Matrix presentation for World IPv6 Launch, June 2012IPv6 Matrix presentation for World IPv6 Launch, June 2012
IPv6 Matrix presentation for World IPv6 Launch, June 2012Olivier MJ Crépin-Leblond
 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Reza Rahman
 
Compile ahead of time. It's fine?
Compile ahead of time. It's fine?Compile ahead of time. It's fine?
Compile ahead of time. It's fine?Dmitry Chuyko
 
ZK_Arch_notes_20081121
ZK_Arch_notes_20081121ZK_Arch_notes_20081121
ZK_Arch_notes_20081121WANGCHOU LU
 
The Right Pill for JRuby Memory and Thread Issues: Eclipse Memory Analyzer
The Right Pill for JRuby Memory and Thread Issues: Eclipse Memory AnalyzerThe Right Pill for JRuby Memory and Thread Issues: Eclipse Memory Analyzer
The Right Pill for JRuby Memory and Thread Issues: Eclipse Memory AnalyzerVladimir Pavlov
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)David Delabassee
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! David Delabassee
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOFglassfish
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
"Petascale Genomics with Spark", Sean Owen,Director of Data Science at Cloudera
"Petascale Genomics with Spark", Sean Owen,Director of Data Science at Cloudera"Petascale Genomics with Spark", Sean Owen,Director of Data Science at Cloudera
"Petascale Genomics with Spark", Sean Owen,Director of Data Science at ClouderaDataconomy Media
 
IPv6 Matrix Exec Summary Dec 2011 Results - ICCA Pondicherry 31 Jan 2012
IPv6 Matrix Exec Summary Dec 2011 Results - ICCA Pondicherry 31 Jan 2012IPv6 Matrix Exec Summary Dec 2011 Results - ICCA Pondicherry 31 Jan 2012
IPv6 Matrix Exec Summary Dec 2011 Results - ICCA Pondicherry 31 Jan 2012Olivier MJ Crépin-Leblond
 
What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24Jim Jagielski
 
Deploy Rails Application by Capistrano
Deploy Rails Application by CapistranoDeploy Rails Application by Capistrano
Deploy Rails Application by CapistranoTasawr Interactive
 

Similaire à Implementing EIP with Apache Camel (20)

Camel and JBoss
Camel and JBossCamel and JBoss
Camel and JBoss
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
Apache camel overview dec 2011
Apache camel overview dec 2011Apache camel overview dec 2011
Apache camel overview dec 2011
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
 
IPv6 Matrix presentation for World IPv6 Launch, June 2012
IPv6 Matrix presentation for World IPv6 Launch, June 2012IPv6 Matrix presentation for World IPv6 Launch, June 2012
IPv6 Matrix presentation for World IPv6 Launch, June 2012
 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
 
Practical JRuby
Practical JRubyPractical JRuby
Practical JRuby
 
Compile ahead of time. It's fine?
Compile ahead of time. It's fine?Compile ahead of time. It's fine?
Compile ahead of time. It's fine?
 
20160908 hivemall meetup
20160908 hivemall meetup20160908 hivemall meetup
20160908 hivemall meetup
 
ZK_Arch_notes_20081121
ZK_Arch_notes_20081121ZK_Arch_notes_20081121
ZK_Arch_notes_20081121
 
The Right Pill for JRuby Memory and Thread Issues: Eclipse Memory Analyzer
The Right Pill for JRuby Memory and Thread Issues: Eclipse Memory AnalyzerThe Right Pill for JRuby Memory and Thread Issues: Eclipse Memory Analyzer
The Right Pill for JRuby Memory and Thread Issues: Eclipse Memory Analyzer
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
 
GlassFish BOF
GlassFish BOFGlassFish BOF
GlassFish BOF
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
"Petascale Genomics with Spark", Sean Owen,Director of Data Science at Cloudera
"Petascale Genomics with Spark", Sean Owen,Director of Data Science at Cloudera"Petascale Genomics with Spark", Sean Owen,Director of Data Science at Cloudera
"Petascale Genomics with Spark", Sean Owen,Director of Data Science at Cloudera
 
AppengineJS
AppengineJSAppengineJS
AppengineJS
 
IPv6 Matrix Exec Summary Dec 2011 Results - ICCA Pondicherry 31 Jan 2012
IPv6 Matrix Exec Summary Dec 2011 Results - ICCA Pondicherry 31 Jan 2012IPv6 Matrix Exec Summary Dec 2011 Results - ICCA Pondicherry 31 Jan 2012
IPv6 Matrix Exec Summary Dec 2011 Results - ICCA Pondicherry 31 Jan 2012
 
What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24
 
Deploy Rails Application by Capistrano
Deploy Rails Application by CapistranoDeploy Rails Application by Capistrano
Deploy Rails Application by Capistrano
 

Plus de JBUG London

London JBUG April 2015 - Performance Tuning Apps with WildFly Application Server
London JBUG April 2015 - Performance Tuning Apps with WildFly Application ServerLondon JBUG April 2015 - Performance Tuning Apps with WildFly Application Server
London JBUG April 2015 - Performance Tuning Apps with WildFly Application ServerJBUG London
 
WebSocketson WildFly
WebSocketson WildFly WebSocketson WildFly
WebSocketson WildFly JBUG London
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9JBUG London
 
Introduction to PicketLink
Introduction to PicketLinkIntroduction to PicketLink
Introduction to PicketLinkJBUG London
 
Extending WildFly
Extending WildFlyExtending WildFly
Extending WildFlyJBUG London
 
What's New in Infinispan 6.0
What's New in Infinispan 6.0What's New in Infinispan 6.0
What's New in Infinispan 6.0JBUG London
 
Compensating Transactions: When ACID is too much
Compensating Transactions: When ACID is too muchCompensating Transactions: When ACID is too much
Compensating Transactions: When ACID is too muchJBUG London
 
London JBUG - Connecting Applications Everywhere with JBoss A-MQ
London JBUG - Connecting Applications Everywhere with JBoss A-MQLondon JBUG - Connecting Applications Everywhere with JBoss A-MQ
London JBUG - Connecting Applications Everywhere with JBoss A-MQJBUG London
 
jBPM5 - The Evolution of BPM Systems
jBPM5 - The Evolution of BPM SystemsjBPM5 - The Evolution of BPM Systems
jBPM5 - The Evolution of BPM SystemsJBUG London
 
Arquillian - Integration Testing Made Easy
Arquillian - Integration Testing Made EasyArquillian - Integration Testing Made Easy
Arquillian - Integration Testing Made EasyJBUG London
 
Infinispan from POC to Production
Infinispan from POC to ProductionInfinispan from POC to Production
Infinispan from POC to ProductionJBUG London
 
Hibernate OGM - JPA for Infinispan and NoSQL
Hibernate OGM - JPA for Infinispan and NoSQLHibernate OGM - JPA for Infinispan and NoSQL
Hibernate OGM - JPA for Infinispan and NoSQLJBUG London
 
JBoss jBPM, the future is now for all your Business Processes by Eric Schabell
JBoss jBPM, the future is now for all your Business Processes by Eric SchabellJBoss jBPM, the future is now for all your Business Processes by Eric Schabell
JBoss jBPM, the future is now for all your Business Processes by Eric SchabellJBUG London
 
JBoss AS7 by Matt Brasier
JBoss AS7 by Matt BrasierJBoss AS7 by Matt Brasier
JBoss AS7 by Matt BrasierJBUG London
 

Plus de JBUG London (14)

London JBUG April 2015 - Performance Tuning Apps with WildFly Application Server
London JBUG April 2015 - Performance Tuning Apps with WildFly Application ServerLondon JBUG April 2015 - Performance Tuning Apps with WildFly Application Server
London JBUG April 2015 - Performance Tuning Apps with WildFly Application Server
 
WebSocketson WildFly
WebSocketson WildFly WebSocketson WildFly
WebSocketson WildFly
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
 
Introduction to PicketLink
Introduction to PicketLinkIntroduction to PicketLink
Introduction to PicketLink
 
Extending WildFly
Extending WildFlyExtending WildFly
Extending WildFly
 
What's New in Infinispan 6.0
What's New in Infinispan 6.0What's New in Infinispan 6.0
What's New in Infinispan 6.0
 
Compensating Transactions: When ACID is too much
Compensating Transactions: When ACID is too muchCompensating Transactions: When ACID is too much
Compensating Transactions: When ACID is too much
 
London JBUG - Connecting Applications Everywhere with JBoss A-MQ
London JBUG - Connecting Applications Everywhere with JBoss A-MQLondon JBUG - Connecting Applications Everywhere with JBoss A-MQ
London JBUG - Connecting Applications Everywhere with JBoss A-MQ
 
jBPM5 - The Evolution of BPM Systems
jBPM5 - The Evolution of BPM SystemsjBPM5 - The Evolution of BPM Systems
jBPM5 - The Evolution of BPM Systems
 
Arquillian - Integration Testing Made Easy
Arquillian - Integration Testing Made EasyArquillian - Integration Testing Made Easy
Arquillian - Integration Testing Made Easy
 
Infinispan from POC to Production
Infinispan from POC to ProductionInfinispan from POC to Production
Infinispan from POC to Production
 
Hibernate OGM - JPA for Infinispan and NoSQL
Hibernate OGM - JPA for Infinispan and NoSQLHibernate OGM - JPA for Infinispan and NoSQL
Hibernate OGM - JPA for Infinispan and NoSQL
 
JBoss jBPM, the future is now for all your Business Processes by Eric Schabell
JBoss jBPM, the future is now for all your Business Processes by Eric SchabellJBoss jBPM, the future is now for all your Business Processes by Eric Schabell
JBoss jBPM, the future is now for all your Business Processes by Eric Schabell
 
JBoss AS7 by Matt Brasier
JBoss AS7 by Matt BrasierJBoss AS7 by Matt Brasier
JBoss AS7 by Matt Brasier
 

Dernier

So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 

Dernier (20)

So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 

Implementing EIP with Apache Camel

  • 1. Implemen(ng  Enterprise  Integra(on   Pa3erns  through  Apache  Camel   James  Strachan,  Red  Hat 1 Friday, February 8, 2013
  • 2. Your  speaker  today  James  Strachan • jstrachan@redhat.com • twi8er:  @jstrachan • blog:  h8p://macstrac.blogspot.com/  Senior  Consul(ng  SoFware  Engineer  at  Red  Hat • leaders  in  open  source  middleware  &  integra?on • we  provide  training,  consul?ng,  support,  distribu?ons  &  tools  for  open   source  integra?on  soCware  Open  Source  hacker • created  the  Groovy  programming  language • created  Apache  Camel • co-­‐founder  of – Apache  Ac(veMQ,  ServiceMix,  Geronimo – Scalate • lets  not  men?on  Jelly  :) 2 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 3. What  are  Enterprise  Integra?on  Pa8erns? 3 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 4. Book  by  Gregor  &  Bobby! 4 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 5. A  selec?on  of  some  of  the  pa8erns... 5 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 6. What  is  Apache  Camel? http://camel.apache.org/ 6 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 7. What  is  Apache  Camel? Apache  Camel  is  a  Powerful  Open  Source Integra(on  Framework based  on  known Enterprise  Integra(on  Pa3erns   h3p://camel.apache.org/enterprise-­‐integra(on-­‐pa3erns.html 7 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 8. Lets  look  at  a  pa8ern! 8 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 9. Message  Filter 9 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 10. Message  Filter  :  XML <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:topic:Quotes"/> <filter> <xpath>/quote/product = ‘widget’</xpath> <to uri="mqseries:WidgetQuotes"/> </filter> </route> </camelContext> 10 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 11. Message  Filter  :  Spring  XML <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:topic:Quotes"/> <filter> <xpath>/quote/product = ‘widget’</xpath> <to uri="mqseries:WidgetQuotes"/> </filter> </route> </camelContext> </beans> 11 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 12. Message  Filter  :  XML <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:topic:Quotes"/> <filter> <xpath>/quote/product = ‘widget’</xpath> <to uri="mqseries:WidgetQuotes"/> </filter> </route> </camelContext> 12 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 13. Expressions  &  Predicates 15 Expression Languages BeanShell Python EL Ruby Groovy Simple JavaScript SpEL JSR 223 SQL OGNL XPath MVEL XQuery PHP 13 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 14. URIs,  Endpoints  and  Components  (120+) h8p://camel.apache.org/components.html activemq cxf flatpack jasypt activemq-journal cxfrs freemarker javaspace amqp dataset ftp/ftps/sftp jbi atom db4o gae jcr bean direct hdfs jdbc bean validation ejb hibernate jetty browse esper hl7 jms cache event http jmx cometd exec ibatis jpa crypto file irc jt/400 14 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 15. 120+  components... language properties seda stream ldap quartz servlet string-template mail/imap/pop3 quickfix sip test mina ref smooks timer mock restlet smpp validation msv rmi snmp velocity nagios rnc spring-integration vm netty rng spring-security xmpp nmr rss spring-ws xquery printer scalate sql xslt 15 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 16. Message  Filter  :  XML <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:topic:Quotes"/> <filter> <xpath>/quote/product = ‘widget’</xpath> <to uri="mqseries:WidgetQuotes"/> </filter> </route> </camelContext> 16 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 17. Message  Filter  :  Java from("activemq:topic:Quotes”). filter().xpath("/quote/product = ‘widget’"). to("mqseries:WidgetQuotes"); 17 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 18. Message  Filter  :  Java  Complete package com.acme.quotes; import org.apache.camel.builder.RouteBuilder; public class MyRouteBuilder extends RouteBuilder { public void configure() { // forward widget quotes to MQSeries from("activemq:topic:Quotes”). filter().xpath("/quote/product = ‘widget’"). to("mqseries:WidgetQuotes"); } } 18 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 19. Message  Filter  :  Scala   "direct:a" when(_.in == "<hello/>") { to("mock:a") } 19 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 20. Create  CamelContext  in  Spring <camelContext xmlns="http://camel.apache.org/schema/spring"> <package>com.acme.quotes</package> </camelContext> 20 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 21. Create  CamelContext  in  Java CamelContext context = new DefaultCamelContext(); context.addRoutes(new MyRouteBuilder()); context.start(); 21 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 22. IDE  support Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 23. IDE  support  (XML) 23 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 24. Recap  -­‐  core  concepts  of  Camel  Enterprise  Integra(on  Pa3erns  Rou(ng  Domain  Specific  Language  (DSL)  Endpoints  &  URIs  Predicates  &  Expressions  Components  (lots  of  ‘em!)  Test  Kit               and  much  more  ... 24 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 25. Beans 25 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 26. Bean  as  a  Message  Translator from("activemq:Incoming”). beanRef("myBeanName”, “someMethod"). to("activemq:Outgoing"); 26 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 27. Bean   public class Foo { public String someMethod(String name) { return “Hello “ + name; } } 27 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 28. Binding  Beans  to  Camel  Endpoints public class Foo { @Consume(uri="activemq:cheese") public Object onCheese(String name) { ... } } 28 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 29. Binding  Method  Arguments public class Foo { public Object onCheese( @XPath("/foo/bar") String name, @Header("JMSCorrelationID") String id) { ... } } for  more  annota(ons  see h3p://camel.apache.org/bean-­‐integra(on.html 29 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 30. Sending  messages  to  endpoints public class Foo { @Produce(uri="activemq:foo.bar") ProducerTemplate producer; public void doSomething() { if (whatever) { producer.sendBody("<hello>world!</hello>"); } } } 30 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 31. Sending  messages  to  endpoints public interface MyListener { String sayHello(String name); } public class MyBean { @Produce(uri = "activemq:foo") protected MyListener producer; public void doSomething() { // lets send a message String response = producer.sayHello("James"); } } 31 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 32. Fastest  way  to  learn....  Manning  top-­‐15  year  to  date  (2010) #10 #12 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 33. Fuse  IDE:  the  fastest  way  to  get  riding!  free  eclipse  based  tool  for  Apache  Camel  &  Ac(veMQ  etc • create  projects,  edit  routes,  run  stuff,  visualise,  trace  &  diagnose h3p://fusesource.com/ 33 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 34. Summary:  Camel  rocks  Ride  that  Camel • h8p://camel.apache.org/  Download  Fuse  IDE • h8p://fusesource.com  Buy  the  book!    Don’t  get  the  hump! 34 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013
  • 35. Any  Ques(ons? twi3er:  @jstrachan  #fusenews h3p://fusesource.com 35 Copyright  ©  2013  Red  Hat,  Inc.  All  rights  reserved.   Friday, February 8, 2013