Getting Started with Apache Camel - Malmo JUG - March 2013
Upcoming SlideShare
Loading in...5
×
 

Getting Started with Apache Camel - Malmo JUG - March 2013

on

  • 1,243 views

This session will teach you how to get a good start with Apache Camel. ...

This session will teach you how to get a good start with Apache Camel.

We will introduce you to Apache Camel and how Camel its related to Enterprise Integration Patterns. And how you go about using these patterns in Camel routes, written in Java code or XML files.

We will then discuss how you can get started developing with Camel, and how to setup a new project from scratch using Maven and Eclipse tooling.

This session includes live demos that show how to build Camel applications in Java, Spring, OSGi Blueprint and alternative languages such as Scala and Groovy.

You will also hear what other features Camel provides out of the box, which can make integration much easier for you.

At the end we demonstrate how to build custom components, allowing you to build custom adapters if not already provided by Camel.

Before opening up for QA, we will share useful links where you can dive into learning more about Camel.

Statistics

Views

Total Views
1,243
Views on SlideShare
1,199
Embed Views
44

Actions

Likes
3
Downloads
23
Comments
0

1 Embed 44

https://twitter.com 44

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Getting Started with Apache Camel - Malmo JUG - March 2013 Getting Started with Apache Camel - Malmo JUG - March 2013 Presentation Transcript

  • Getting Started with Apache Camel Claus Ibsen (@davsclaus) Principal Software Engineer, Red Hat Javaforum Malmo, march 20131 PUBLIC PRESENTATION | CLAUS IBSEN
  • Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● Whats in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Q and A2 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.com3 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? ● Quote from the website4 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? Its a book6 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? ● Enterprise Integration Patterns http://camel.apache.org/eip7 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? ● EIP - Content Based Router8 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? from newOrder9 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? from newOrder choice10 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? from newOrder choice when isWidget to widget11 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? from newOrder choice when isWidget to widget otherwise to gadget12 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? ● Camels Architecture24 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? 120+ Components25 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? 120+ Components26 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? ● Summary ● Integration Framework ● Enterprise Integration Patterns (EIP) ● Routing (using DSL) ● Easy Configuration (endpoint as uris) ● Payload Agnostic ● No Container Dependency ● A lot of components27 PUBLIC PRESENTATION | CLAUS IBSEN
  • Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● Whats in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Extending Camel ● Q and A28 PUBLIC PRESENTATION | CLAUS IBSEN
  • A Little Example ● File Copier Example29 PUBLIC PRESENTATION | CLAUS IBSEN
  • A Little Example ● File Copier Example30 PUBLIC PRESENTATION | CLAUS IBSEN
  • A Little Example ● File Copier Example31 PUBLIC PRESENTATION | CLAUS IBSEN
  • A Little Example ● File Copier Example32 PUBLIC PRESENTATION | CLAUS IBSEN
  • A Little Example ● File Copier Example33 PUBLIC PRESENTATION | CLAUS IBSEN
  • Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● Whats in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Q and A34 PUBLIC PRESENTATION | CLAUS IBSEN
  • Riding Camel ● Downloading Apache Camel ● zip/tarball (approx 14mb) http://camel.apache.org35 PUBLIC PRESENTATION | CLAUS IBSEN
  • Riding Camel ● Using Command Shell ● Requires: Apache Maven ● From Eclipse36 PUBLIC PRESENTATION | CLAUS IBSEN
  • Riding Camel ● Console Example ● cd examples/camel-example-console ● mvn compile exec:java37 PUBLIC PRESENTATION | CLAUS IBSEN
  • Riding Camel ● Twitter Example ● cd examples/camel-example-twitter-websocket ● mvn compile exec:java http://localhost:9090/index.html38 PUBLIC PRESENTATION | CLAUS IBSEN
  • Riding Camel ● More examples ... ... and further details at website. http://camel.apache.org/examples39 PUBLIC PRESENTATION | CLAUS IBSEN
  • Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● Whats in the box? ● Deploying Camel ● Creating new Camel Projects ● Q and A40 PUBLIC PRESENTATION | CLAUS IBSEN
  • Whats in the box?41 PUBLIC PRESENTATION | CLAUS IBSEN
  • Whats in the box? ● Enterprise Integration Patterns http://camel.apache.org/eip42 PUBLIC PRESENTATION | CLAUS IBSEN
  • Whats in the box? ● Splitter EIP43 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? 120+ Components44 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? 19 Data Formats45 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? 15 Expression Languages46 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-testng48 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? Management ● JMX ● REST49 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? Tooling – Web console - HawtIO http://hawt.io50 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? Tooling – Eclipse Plugin – Fuse IDE http://github.com/fusesource/fuseide51 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? Error Handling52 PUBLIC PRESENTATION | CLAUS IBSEN
  • What is Apache Camel? try .. catch style53 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 more55 PUBLIC PRESENTATION | CLAUS IBSEN
  • Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● Whats in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Extending Camel ● Q and A56 PUBLIC PRESENTATION | CLAUS IBSEN
  • Deploying Camel ● Deployment Strategy ● No Container Dependency ● Lightweight & Embeddable ● Deployment Options ● Standalone ● WAR ● Spring ● JEE ● OSGi ● Cloud57 PUBLIC PRESENTATION | CLAUS IBSEN
  • Camel as a Client ● Java Client Application (no routes) ● Example ● Upload a file to a FTP server58 PUBLIC PRESENTATION | CLAUS IBSEN
  • Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● Whats in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Q and A59 PUBLIC PRESENTATION | CLAUS IBSEN
  • Creating new Camel Projects ● Using Command Shell ● From Eclipse60 PUBLIC PRESENTATION | CLAUS IBSEN
  • Creating new Camel Projects ● Maven Archetypes61 PUBLIC PRESENTATION | CLAUS IBSEN
  • Creating new Camel Projects ● camel-archetype-blueprint62 PUBLIC PRESENTATION | CLAUS IBSEN
  • Creating new Camel Projects ● Importing into Eclipse Existing Maven Project63 PUBLIC PRESENTATION | CLAUS IBSEN
  • Creating new Camel Projects ● Testing Camel Projects ● ... from inside Eclipse64 PUBLIC PRESENTATION | CLAUS IBSEN
  • Agenda ● What is Apache Camel? ● A little Example ● Riding Camel ● Whats in the Camel box? ● Deploying Camel ● Creating new Camel Projects ● Q and A65 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 page67 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-camel68 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