SlideShare a Scribd company logo
Getting Started with Apache Camel



    Claus Ibsen (@davsclaus)
    Principal Software Engineer, Red Hat
    Javaforum Malmo, march 2013




1                 PUBLIC PRESENTATION | CLAUS IBSEN
Agenda

    ●   What is Apache Camel?
    ●   A little Example
    ●   Riding Camel
    ●   What's in the Camel box?
    ●   Deploying Camel
    ●   Creating new Camel Projects
    ●   Q and A




2                          PUBLIC PRESENTATION | CLAUS IBSEN
Your Speaker

    ●   Principal Software Engineer at Red Hat
    ●   Apache Camel
         ●   5 years working with Camel
    ●   Author of Camel in Action book
    ●   Contact
         ●   EMail: cibsen@redhat.com
         ●   Twitter: @davsclaus
         ●   Blog: http://davsclaus.com




3                             PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

    ●   Quote from the website




4                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

    ●   Why do we need integration?
         ●   Critical for your business to integrate
    ●   Why Integration Framework?
         ●   Framework do the heavy lifting
         ●   You can focus on business problem
         ●   Not "reinventing the wheel"




5                               PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

    ●   What is Enterprise Integration Patterns?




                          It's a book

6                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

    ●   Enterprise Integration Patterns




                   http://camel.apache.org/eip

7                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

    ●   EIP - Content Based Router




8                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?




    from newOrder




9                   PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?




     from newOrder
       choice




10                   PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?




     from newOrder
       choice
         when isWidget to widget




11                   PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?




     from newOrder
       choice
         when isWidget to widget
         otherwise to gadget




12                   PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?




     from(newOrder)
       choice
         when(isWidget) to(widget)
         otherwise to(gadget)




13                   PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?




     from(newOrder)
       .choice()
         .when(isWidget).to(widget)
         .otherwise().to(gadget);




14                   PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?




     Endpoint newOrder = endpoint("activemq:queue:newOrder");




     from(newOrder)
       .choice()
         .when(isWidget).to(widget)
         .otherwise().to(gadget);




15                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?




     Endpoint newOrder = endpoint("activemq:queue:newOrder");
     Predicate isWidget = xpath("/order/product = 'widget'");



     from(newOrder)
       .choice()
         .when(isWidget).to(widget)
         .otherwise().to(gadget);




16                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?




     Endpoint newOrder = endpoint("activemq:queue:newOrder");
     Predicate isWidget = xpath("/order/product = 'widget'");
     Endpoint widget = endpoint("activemq:queue:widget");
     Endpoint gadget = endpoint("activemq:queue:gadget");

     from(newOrder)
       .choice()
         .when(isWidget).to(widget)
         .otherwise().to(gadget);




17                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

 ●   Java Code




        public void configure() throws Exception {
          Endpoint newOrder = endpoint("activemq:queue:newOrder");
          Predicate isWidget = xpath("/order/product = 'widget'");
          Endpoint widget = endpoint("activemq:queue:widget");
          Endpoint gadget = endpoint("activemq:queue:gadget");

            from(newOrder)
              .choice()
                .when(isWidget).to(widget)
                .otherwise().to(gadget)
              .end();
        }

18                           PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

 ●   Java Code
       import org.apache.camel.Endpoint;
       import org.apache.camel.Predicate;
       import org.apache.camel.builder.RouteBuilder;

       public class MyRoute extends RouteBuilder {

           public void configure() throws Exception {
             Endpoint newOrder = endpoint("activemq:queue:newOrder");
             Predicate isWidget = xpath("/order/product = 'widget'");
             Endpoint widget = endpoint("activemq:queue:widget");
             Endpoint gadget = endpoint("activemq:queue:gadget");

               from(newOrder)
                 .choice()
                   .when(isWidget).to(widget)
                   .otherwise().to(gadget)
                 .end();
           }
       }
19                              PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

 ●   Camel Java DSL

       import org.apache.camel.builder.RouteBuilder;

       public class MyRoute extends RouteBuilder {

           public void configure() throws Exception {
             from("activemq:queue:newOrder")
               .choice()
                 .when(xpath("/order/product = 'widget'"))
                   .to("activemq:queue:widget")
                 .otherwise()
                   .to("activemq:queue:gadget")
               .end();
           }
       }



20                            PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

 ●   Camel XML DSL
        <route>
          <from uri="activemq:queue:newOrder"/>
          <choice>
            <when>
              <xpath>/order/product = 'widget'</xpath>
              <to uri="activemq:queue:widget"/>
            </when>
            <otherwise>
              <to uri="activemq:queue:gadget"/>
            </otherwise>
          </choice>
        </route>




21                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?
                                          use file instead
 ●   Endpoint as URIs
        <route>
          <from uri="file:inbox/orders"/>
          <choice>
            <when>
              <xpath>/order/product = 'widget'</xpath>
              <to uri="activemq:queue:widget"/>
            </when>
            <otherwise>
              <to uri="activemq:queue:gadget"/>
            </otherwise>
          </choice>
        </route>




22                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?
                                                               parameters
 ●   Endpoint as URIs
        <route>
          <from uri="file:inbox/orders?delete=true"/>
          <choice>
            <when>
              <xpath>/order/product = 'widget'</xpath>
              <to uri="activemq:queue:widget"/>
            </when>
            <otherwise>
              <to uri="activemq:queue:gadget"/>
            </otherwise>
          </choice>
        </route>




23                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

 ●   Camel's Architecture




24                     PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     120+ Components




25                     PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     120+ Components




26                     PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

 ●   Summary
     ●   Integration Framework
     ●   Enterprise Integration Patterns (EIP)
     ●   Routing (using DSL)
     ●   Easy Configuration (endpoint as uri's)
     ●   Payload Agnostic
     ●   No Container Dependency
     ●   A lot of components




27                          PUBLIC PRESENTATION | CLAUS IBSEN
Agenda

 ●   What is Apache Camel?
 ●   A little Example
 ●   Riding Camel
 ●   What's in the Camel box?
 ●   Deploying Camel
 ●   Creating new Camel Projects
 ●   Extending Camel
 ●   Q and A



28                      PUBLIC PRESENTATION | CLAUS IBSEN
A Little Example

 ●   File Copier Example




29                     PUBLIC PRESENTATION | CLAUS IBSEN
A Little Example

 ●   File Copier Example




30                     PUBLIC PRESENTATION | CLAUS IBSEN
A Little Example

 ●   File Copier Example




31                     PUBLIC PRESENTATION | CLAUS IBSEN
A Little Example

 ●   File Copier Example




32                     PUBLIC PRESENTATION | CLAUS IBSEN
A Little Example

 ●   File Copier Example




33                     PUBLIC PRESENTATION | CLAUS IBSEN
Agenda

 ●   What is Apache Camel?
 ●   A little Example
 ●   Riding Camel
 ●   What's in the Camel box?
 ●   Deploying Camel
 ●   Creating new Camel Projects
 ●   Q and A




34                      PUBLIC PRESENTATION | CLAUS IBSEN
Riding Camel

 ●   Downloading Apache Camel
     ●   zip/tarball (approx 14mb)




                                                      http://camel.apache.org




35                        PUBLIC PRESENTATION | CLAUS IBSEN
Riding Camel

 ●   Using Command Shell
      ●   Requires: Apache Maven




 ●   From Eclipse




36                       PUBLIC PRESENTATION | CLAUS IBSEN
Riding Camel

 ●   Console Example




 ●   cd examples/camel-example-console
 ●   mvn compile exec:java

37                     PUBLIC PRESENTATION | CLAUS IBSEN
Riding Camel

 ●   Twitter Example




 ●   cd examples/camel-example-twitter-websocket
 ●   mvn compile exec:java                  http://localhost:9090/index.html



38                     PUBLIC PRESENTATION | CLAUS IBSEN
Riding Camel

 ●   More examples ...




     ... and further details at website.

                http://camel.apache.org/examples




39                        PUBLIC PRESENTATION | CLAUS IBSEN
Agenda

 ●   What is Apache Camel?
 ●   A little Example
 ●   Riding Camel
 ●   What's in the box?
 ●   Deploying Camel
 ●   Creating new Camel Projects
 ●   Q and A




40                      PUBLIC PRESENTATION | CLAUS IBSEN
What's in the box?




41                   PUBLIC PRESENTATION | CLAUS IBSEN
What's in the box?

 ●   Enterprise Integration Patterns




                http://camel.apache.org/eip

42                     PUBLIC PRESENTATION | CLAUS IBSEN
What's in the box?

 ●   Splitter EIP




43                   PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     120+ Components




44                     PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     19 Data Formats




45                     PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     15 Expression Languages




46                    PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     5+ DSL in multiple languages
      ●   Java DSL
      ●   XML DSL (Spring and OSGi Blueprint)
      ●   Groovy DSL
      ●   Scala DSL
      ●   Kotlin DSL (work in progress)




47                         PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     Test Kit
      ●   camel-test                      camel-test-spring
      ●   camel-test-blueprint            camel-testng




48                          PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     Management
     ●   JMX
     ●   REST




49                PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     Tooling – Web console - HawtIO




                       http://hawt.io
50                     PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     Tooling – Eclipse Plugin – Fuse IDE




              http://github.com/fusesource/fuseide
51                      PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     Error Handling




52                    PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     try .. catch style




53                        PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?

     Dead Letter Channel (EIP style)




54                      PUBLIC PRESENTATION | CLAUS IBSEN
What is Apache Camel?
     The Rest
     ●   Interceptors
     ●   Security
     ●   Route Policy
     ●   Type Converters
     ●   Transaction
          ●   Compensation as rollback
     ●   Asynchronous non-blocking routing engine
     ●   Thread management
     ●   Maven Tooling
     ●   ... and much more
55                           PUBLIC PRESENTATION | CLAUS IBSEN
Agenda

 ●   What is Apache Camel?
 ●   A little Example
 ●   Riding Camel
 ●   What's in the Camel box?
 ●   Deploying Camel
 ●   Creating new Camel Projects
 ●   Extending Camel
 ●   Q and A



56                      PUBLIC PRESENTATION | CLAUS IBSEN
Deploying Camel

 ●   Deployment Strategy
     ●   No Container Dependency
     ●   Lightweight & Embeddable
 ●   Deployment Options
     ●   Standalone
     ●   WAR
     ●   Spring
     ●   JEE
     ●   OSGi
     ●   Cloud

57                       PUBLIC PRESENTATION | CLAUS IBSEN
Camel as a Client

 ●   Java Client Application (no routes)
 ●   Example
      ●   Upload a file to a FTP server




58                          PUBLIC PRESENTATION | CLAUS IBSEN
Agenda

 ●   What is Apache Camel?
 ●   A little Example
 ●   Riding Camel
 ●   What's in the Camel box?
 ●   Deploying Camel
 ●   Creating new Camel Projects
 ●   Q and A




59                      PUBLIC PRESENTATION | CLAUS IBSEN
Creating new Camel Projects

 ●   Using Command Shell




 ●   From Eclipse




60                   PUBLIC PRESENTATION | CLAUS IBSEN
Creating new Camel Projects

 ●   Maven Archetypes




61                      PUBLIC PRESENTATION | CLAUS IBSEN
Creating new Camel Projects

 ●   camel-archetype-blueprint




62                     PUBLIC PRESENTATION | CLAUS IBSEN
Creating new Camel Projects

 ●   Importing into Eclipse




                                                       Existing Maven Project




63                      PUBLIC PRESENTATION | CLAUS IBSEN
Creating new Camel Projects

 ●   Testing Camel Projects




 ●   ... from inside Eclipse


64                       PUBLIC PRESENTATION | CLAUS IBSEN
Agenda

 ●   What is Apache Camel?
 ●   A little Example
 ●   Riding Camel
 ●   What's in the Camel box?
 ●   Deploying Camel
 ●   Creating new Camel Projects
 ●   Q and A




65                      PUBLIC PRESENTATION | CLAUS IBSEN
Where do I get more information?
 ●   Best Article covering what Apache Camel is
      ●   http://java.dzone.com/articles/open-source-integration-
          apache




                                                        Link to article from “Getting Started”




66                          PUBLIC PRESENTATION | CLAUS IBSEN
Where do I get more information?
 ●   Try Camel Examples
      ●   http://camel.apache.org/examples.html


 ●   Read other blogs and articles
      ●   http://camel.apache.org/articles.html


 ●   Use the “search box” on the Camel front page




67                          PUBLIC PRESENTATION | CLAUS IBSEN
Where do I get more information?
 ●   Use the mailing list / forum
      ●   http://camel.apache.org/mailing-lists.html


 ●   Use stackoverflow
      ●   http://stackoverflow.com/questions/tagged/apache-camel




68                          PUBLIC PRESENTATION | CLAUS IBSEN
Where do I get more information?
 ●   Buy the Camel in Action book




                                                                Use code ...
                                                                  camel40
                                                             … for 40% discount




                   http://manning.com/ibsen/




69                       PUBLIC PRESENTATION | CLAUS IBSEN
Any Questions ?



●    Contact
      ● EMail: cibsen@redhat.com
      ● Twitter: @davsclaus
      ● Blog: http://davsclaus.com




    70                               PUBLIC PRESENTATION | CLAUS IBSEN

More Related Content

Getting Started with Apache Camel - Malmo JUG - March 2013

  • 1. Getting Started with Apache Camel Claus Ibsen (@davsclaus) Principal Software Engineer, Red Hat Javaforum Malmo, march 2013 1 PUBLIC PRESENTATION | CLAUS IBSEN
  • 2. Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● What's in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Q and A 2 PUBLIC PRESENTATION | CLAUS IBSEN
  • 3. Your Speaker ● Principal Software Engineer at Red Hat ● Apache Camel ● 5 years working with Camel ● Author of Camel in Action book ● Contact ● EMail: cibsen@redhat.com ● Twitter: @davsclaus ● Blog: http://davsclaus.com 3 PUBLIC PRESENTATION | CLAUS IBSEN
  • 4. What is Apache Camel? ● Quote from the website 4 PUBLIC PRESENTATION | CLAUS IBSEN
  • 5. What is Apache Camel? ● Why do we need integration? ● Critical for your business to integrate ● Why Integration Framework? ● Framework do the heavy lifting ● You can focus on business problem ● Not "reinventing the wheel" 5 PUBLIC PRESENTATION | CLAUS IBSEN
  • 6. What is Apache Camel? ● What is Enterprise Integration Patterns? It's a book 6 PUBLIC PRESENTATION | CLAUS IBSEN
  • 7. What is Apache Camel? ● Enterprise Integration Patterns http://camel.apache.org/eip 7 PUBLIC PRESENTATION | CLAUS IBSEN
  • 8. What is Apache Camel? ● EIP - Content Based Router 8 PUBLIC PRESENTATION | CLAUS IBSEN
  • 9. What is Apache Camel? from newOrder 9 PUBLIC PRESENTATION | CLAUS IBSEN
  • 10. What is Apache Camel? from newOrder choice 10 PUBLIC PRESENTATION | CLAUS IBSEN
  • 11. What is Apache Camel? from newOrder choice when isWidget to widget 11 PUBLIC PRESENTATION | CLAUS IBSEN
  • 12. What is Apache Camel? from newOrder choice when isWidget to widget otherwise to gadget 12 PUBLIC PRESENTATION | CLAUS IBSEN
  • 13. What is Apache Camel? from(newOrder) choice when(isWidget) to(widget) otherwise to(gadget) 13 PUBLIC PRESENTATION | CLAUS IBSEN
  • 14. What is Apache Camel? from(newOrder) .choice() .when(isWidget).to(widget) .otherwise().to(gadget); 14 PUBLIC PRESENTATION | CLAUS IBSEN
  • 15. What is Apache Camel? Endpoint newOrder = endpoint("activemq:queue:newOrder"); from(newOrder) .choice() .when(isWidget).to(widget) .otherwise().to(gadget); 15 PUBLIC PRESENTATION | CLAUS IBSEN
  • 16. What is Apache Camel? Endpoint newOrder = endpoint("activemq:queue:newOrder"); Predicate isWidget = xpath("/order/product = 'widget'"); from(newOrder) .choice() .when(isWidget).to(widget) .otherwise().to(gadget); 16 PUBLIC PRESENTATION | CLAUS IBSEN
  • 17. What is Apache Camel? Endpoint newOrder = endpoint("activemq:queue:newOrder"); Predicate isWidget = xpath("/order/product = 'widget'"); Endpoint widget = endpoint("activemq:queue:widget"); Endpoint gadget = endpoint("activemq:queue:gadget"); from(newOrder) .choice() .when(isWidget).to(widget) .otherwise().to(gadget); 17 PUBLIC PRESENTATION | CLAUS IBSEN
  • 18. What is Apache Camel? ● Java Code public void configure() throws Exception { Endpoint newOrder = endpoint("activemq:queue:newOrder"); Predicate isWidget = xpath("/order/product = 'widget'"); Endpoint widget = endpoint("activemq:queue:widget"); Endpoint gadget = endpoint("activemq:queue:gadget"); from(newOrder) .choice() .when(isWidget).to(widget) .otherwise().to(gadget) .end(); } 18 PUBLIC PRESENTATION | CLAUS IBSEN
  • 19. What is Apache Camel? ● Java Code import org.apache.camel.Endpoint; import org.apache.camel.Predicate; import org.apache.camel.builder.RouteBuilder; public class MyRoute extends RouteBuilder { public void configure() throws Exception { Endpoint newOrder = endpoint("activemq:queue:newOrder"); Predicate isWidget = xpath("/order/product = 'widget'"); Endpoint widget = endpoint("activemq:queue:widget"); Endpoint gadget = endpoint("activemq:queue:gadget"); from(newOrder) .choice() .when(isWidget).to(widget) .otherwise().to(gadget) .end(); } } 19 PUBLIC PRESENTATION | CLAUS IBSEN
  • 20. What is Apache Camel? ● Camel Java DSL import org.apache.camel.builder.RouteBuilder; public class MyRoute extends RouteBuilder { public void configure() throws Exception { from("activemq:queue:newOrder") .choice() .when(xpath("/order/product = 'widget'")) .to("activemq:queue:widget") .otherwise() .to("activemq:queue:gadget") .end(); } } 20 PUBLIC PRESENTATION | CLAUS IBSEN
  • 21. What is Apache Camel? ● Camel XML DSL <route> <from uri="activemq:queue:newOrder"/> <choice> <when> <xpath>/order/product = 'widget'</xpath> <to uri="activemq:queue:widget"/> </when> <otherwise> <to uri="activemq:queue:gadget"/> </otherwise> </choice> </route> 21 PUBLIC PRESENTATION | CLAUS IBSEN
  • 22. What is Apache Camel? use file instead ● Endpoint as URIs <route> <from uri="file:inbox/orders"/> <choice> <when> <xpath>/order/product = 'widget'</xpath> <to uri="activemq:queue:widget"/> </when> <otherwise> <to uri="activemq:queue:gadget"/> </otherwise> </choice> </route> 22 PUBLIC PRESENTATION | CLAUS IBSEN
  • 23. What is Apache Camel? parameters ● Endpoint as URIs <route> <from uri="file:inbox/orders?delete=true"/> <choice> <when> <xpath>/order/product = 'widget'</xpath> <to uri="activemq:queue:widget"/> </when> <otherwise> <to uri="activemq:queue:gadget"/> </otherwise> </choice> </route> 23 PUBLIC PRESENTATION | CLAUS IBSEN
  • 24. What is Apache Camel? ● Camel's Architecture 24 PUBLIC PRESENTATION | CLAUS IBSEN
  • 25. What is Apache Camel? 120+ Components 25 PUBLIC PRESENTATION | CLAUS IBSEN
  • 26. What is Apache Camel? 120+ Components 26 PUBLIC PRESENTATION | CLAUS IBSEN
  • 27. What is Apache Camel? ● Summary ● Integration Framework ● Enterprise Integration Patterns (EIP) ● Routing (using DSL) ● Easy Configuration (endpoint as uri's) ● Payload Agnostic ● No Container Dependency ● A lot of components 27 PUBLIC PRESENTATION | CLAUS IBSEN
  • 28. Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● What's in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Extending Camel ● Q and A 28 PUBLIC PRESENTATION | CLAUS IBSEN
  • 29. A Little Example ● File Copier Example 29 PUBLIC PRESENTATION | CLAUS IBSEN
  • 30. A Little Example ● File Copier Example 30 PUBLIC PRESENTATION | CLAUS IBSEN
  • 31. A Little Example ● File Copier Example 31 PUBLIC PRESENTATION | CLAUS IBSEN
  • 32. A Little Example ● File Copier Example 32 PUBLIC PRESENTATION | CLAUS IBSEN
  • 33. A Little Example ● File Copier Example 33 PUBLIC PRESENTATION | CLAUS IBSEN
  • 34. Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● What's in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Q and A 34 PUBLIC PRESENTATION | CLAUS IBSEN
  • 35. Riding Camel ● Downloading Apache Camel ● zip/tarball (approx 14mb) http://camel.apache.org 35 PUBLIC PRESENTATION | CLAUS IBSEN
  • 36. Riding Camel ● Using Command Shell ● Requires: Apache Maven ● From Eclipse 36 PUBLIC PRESENTATION | CLAUS IBSEN
  • 37. Riding Camel ● Console Example ● cd examples/camel-example-console ● mvn compile exec:java 37 PUBLIC PRESENTATION | CLAUS IBSEN
  • 38. Riding Camel ● Twitter Example ● cd examples/camel-example-twitter-websocket ● mvn compile exec:java http://localhost:9090/index.html 38 PUBLIC PRESENTATION | CLAUS IBSEN
  • 39. Riding Camel ● More examples ... ... and further details at website. http://camel.apache.org/examples 39 PUBLIC PRESENTATION | CLAUS IBSEN
  • 40. Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● What's in the box? ● Deploying Camel ● Creating new Camel Projects ● Q and A 40 PUBLIC PRESENTATION | CLAUS IBSEN
  • 41. What's in the box? 41 PUBLIC PRESENTATION | CLAUS IBSEN
  • 42. What's in the box? ● Enterprise Integration Patterns http://camel.apache.org/eip 42 PUBLIC PRESENTATION | CLAUS IBSEN
  • 43. What's in the box? ● Splitter EIP 43 PUBLIC PRESENTATION | CLAUS IBSEN
  • 44. What is Apache Camel? 120+ Components 44 PUBLIC PRESENTATION | CLAUS IBSEN
  • 45. What is Apache Camel? 19 Data Formats 45 PUBLIC PRESENTATION | CLAUS IBSEN
  • 46. What is Apache Camel? 15 Expression Languages 46 PUBLIC PRESENTATION | CLAUS IBSEN
  • 47. What is Apache Camel? 5+ DSL in multiple languages ● Java DSL ● XML DSL (Spring and OSGi Blueprint) ● Groovy DSL ● Scala DSL ● Kotlin DSL (work in progress) 47 PUBLIC PRESENTATION | CLAUS IBSEN
  • 48. What is Apache Camel? Test Kit ● camel-test camel-test-spring ● camel-test-blueprint camel-testng 48 PUBLIC PRESENTATION | CLAUS IBSEN
  • 49. What is Apache Camel? Management ● JMX ● REST 49 PUBLIC PRESENTATION | CLAUS IBSEN
  • 50. What is Apache Camel? Tooling – Web console - HawtIO http://hawt.io 50 PUBLIC PRESENTATION | CLAUS IBSEN
  • 51. What is Apache Camel? Tooling – Eclipse Plugin – Fuse IDE http://github.com/fusesource/fuseide 51 PUBLIC PRESENTATION | CLAUS IBSEN
  • 52. What is Apache Camel? Error Handling 52 PUBLIC PRESENTATION | CLAUS IBSEN
  • 53. What is Apache Camel? try .. catch style 53 PUBLIC PRESENTATION | CLAUS IBSEN
  • 54. What is Apache Camel? Dead Letter Channel (EIP style) 54 PUBLIC PRESENTATION | CLAUS IBSEN
  • 55. What is Apache Camel? The Rest ● Interceptors ● Security ● Route Policy ● Type Converters ● Transaction ● Compensation as rollback ● Asynchronous non-blocking routing engine ● Thread management ● Maven Tooling ● ... and much more 55 PUBLIC PRESENTATION | CLAUS IBSEN
  • 56. Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● What's in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Extending Camel ● Q and A 56 PUBLIC PRESENTATION | CLAUS IBSEN
  • 57. Deploying Camel ● Deployment Strategy ● No Container Dependency ● Lightweight & Embeddable ● Deployment Options ● Standalone ● WAR ● Spring ● JEE ● OSGi ● Cloud 57 PUBLIC PRESENTATION | CLAUS IBSEN
  • 58. Camel as a Client ● Java Client Application (no routes) ● Example ● Upload a file to a FTP server 58 PUBLIC PRESENTATION | CLAUS IBSEN
  • 59. Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● What's in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Q and A 59 PUBLIC PRESENTATION | CLAUS IBSEN
  • 60. Creating new Camel Projects ● Using Command Shell ● From Eclipse 60 PUBLIC PRESENTATION | CLAUS IBSEN
  • 61. Creating new Camel Projects ● Maven Archetypes 61 PUBLIC PRESENTATION | CLAUS IBSEN
  • 62. Creating new Camel Projects ● camel-archetype-blueprint 62 PUBLIC PRESENTATION | CLAUS IBSEN
  • 63. Creating new Camel Projects ● Importing into Eclipse Existing Maven Project 63 PUBLIC PRESENTATION | CLAUS IBSEN
  • 64. Creating new Camel Projects ● Testing Camel Projects ● ... from inside Eclipse 64 PUBLIC PRESENTATION | CLAUS IBSEN
  • 65. Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● What's in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Q and A 65 PUBLIC PRESENTATION | CLAUS IBSEN
  • 66. Where do I get more information? ● Best Article covering what Apache Camel is ● http://java.dzone.com/articles/open-source-integration- apache Link to article from “Getting Started” 66 PUBLIC PRESENTATION | CLAUS IBSEN
  • 67. Where do I get more information? ● Try Camel Examples ● http://camel.apache.org/examples.html ● Read other blogs and articles ● http://camel.apache.org/articles.html ● Use the “search box” on the Camel front page 67 PUBLIC PRESENTATION | CLAUS IBSEN
  • 68. Where do I get more information? ● Use the mailing list / forum ● http://camel.apache.org/mailing-lists.html ● Use stackoverflow ● http://stackoverflow.com/questions/tagged/apache-camel 68 PUBLIC PRESENTATION | CLAUS IBSEN
  • 69. Where do I get more information? ● Buy the Camel in Action book Use code ... camel40 … for 40% discount http://manning.com/ibsen/ 69 PUBLIC PRESENTATION | CLAUS IBSEN
  • 70. Any Questions ? ● Contact ● EMail: cibsen@redhat.com ● Twitter: @davsclaus ● Blog: http://davsclaus.com 70 PUBLIC PRESENTATION | CLAUS IBSEN