public presentation | claus ibsen€¦ · 2 public presentation | claus ibsen agenda what is apache...
TRANSCRIPT
PUBLIC PRESENTATION | CLAUS IBSEN1
PUBLIC PRESENTATION | CLAUS IBSEN2
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
PUBLIC PRESENTATION | CLAUS IBSEN3
Your Speaker
● Principal Software Engineer at Red Hat
● Apache Camel● 5 years working with Camel
● Author of Camel in Action book
● Contact● EMail: [email protected]● Twitter: @davsclaus● Linkedin: davsclaus● Blog: http://davsclaus.com
PUBLIC PRESENTATION | CLAUS IBSEN4
What is Apache Camel?
● Quote from the website
PUBLIC PRESENTATION | CLAUS IBSEN5
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"
PUBLIC PRESENTATION | CLAUS IBSEN6
What is Apache Camel?
● What is Enterprise Integration Patterns?
It's a book
PUBLIC PRESENTATION | CLAUS IBSEN7
What is Apache Camel?
● Enterprise Integration Patterns
http://camel.apache.org/eip
PUBLIC PRESENTATION | CLAUS IBSEN8
What is Apache Camel?
● EIP - Content Based Router
PUBLIC PRESENTATION | CLAUS IBSEN9
What is Apache Camel?
from newOrder
PUBLIC PRESENTATION | CLAUS IBSEN10
What is Apache Camel?
from newOrder choice
PUBLIC PRESENTATION | CLAUS IBSEN11
What is Apache Camel?
from newOrder choice when isWidget to widget
PUBLIC PRESENTATION | CLAUS IBSEN12
What is Apache Camel?
from newOrder choice when isWidget to widget otherwise to gadget
PUBLIC PRESENTATION | CLAUS IBSEN13
What is Apache Camel?
from(newOrder) choice when(isWidget) to(widget) otherwise to(gadget)
PUBLIC PRESENTATION | CLAUS IBSEN14
What is Apache Camel?
from(newOrder) .choice() .when(isWidget).to(widget) .otherwise().to(gadget);
PUBLIC PRESENTATION | CLAUS IBSEN15
What is Apache Camel?
Endpoint newOrder = endpoint("activemq:queue:newOrder");
from(newOrder) .choice() .when(isWidget).to(widget) .otherwise().to(gadget);
PUBLIC PRESENTATION | CLAUS IBSEN16
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);
PUBLIC PRESENTATION | CLAUS IBSEN17
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);
PUBLIC PRESENTATION | CLAUS IBSEN18
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(); }
PUBLIC PRESENTATION | CLAUS IBSEN19
What is Apache Camel?
● Java Codeimport 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(); }}
PUBLIC PRESENTATION | CLAUS IBSEN20
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(); }}
PUBLIC PRESENTATION | CLAUS IBSEN21
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>
PUBLIC PRESENTATION | CLAUS IBSEN22
What is Apache Camel?
● 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>
use file instead
PUBLIC PRESENTATION | CLAUS IBSEN23
What is Apache Camel?
● 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>
parameters
PUBLIC PRESENTATION | CLAUS IBSEN24
What is Apache Camel?
● Camel's Architecture
PUBLIC PRESENTATION | CLAUS IBSEN25
What is Apache Camel?
120+ Components
PUBLIC PRESENTATION | CLAUS IBSEN26
What is Apache Camel?
120+ Components
PUBLIC PRESENTATION | CLAUS IBSEN27
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
PUBLIC PRESENTATION | CLAUS IBSEN28
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
PUBLIC PRESENTATION | CLAUS IBSEN29
A Little Example
● File Copier Example
PUBLIC PRESENTATION | CLAUS IBSEN30
A Little Example
● File Copier Example
PUBLIC PRESENTATION | CLAUS IBSEN31
A Little Example
● File Copier Example
PUBLIC PRESENTATION | CLAUS IBSEN32
A Little Example
● File Copier Example
PUBLIC PRESENTATION | CLAUS IBSEN33
A Little Example
● File Copier Example
PUBLIC PRESENTATION | CLAUS IBSEN34
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
PUBLIC PRESENTATION | CLAUS IBSEN35
Riding Camel
● Downloading Apache Camel● zip/tarball (approx 14mb)
http://camel.apache.org
PUBLIC PRESENTATION | CLAUS IBSEN36
Riding Camel
● Using Command Shell● Requires: Apache Maven
● From Eclipse
PUBLIC PRESENTATION | CLAUS IBSEN37
Riding Camel
● Console Example
● cd examples/camel-example-console
● mvn compile exec:java
PUBLIC PRESENTATION | CLAUS IBSEN38
Riding Camel
● More examples ...
... and further details at website.
http://camel.apache.org/examples
PUBLIC PRESENTATION | CLAUS IBSEN39
Agenda
● What is Apache Camel?
● A little Example
● Riding Camel
● What's in the box?
● Deploying Camel
● Creating new Camel Projects
● Q and A
PUBLIC PRESENTATION | CLAUS IBSEN40
What's in the box?
PUBLIC PRESENTATION | CLAUS IBSEN41
What's in the box?
● Enterprise Integration Patterns
http://camel.apache.org/eip
PUBLIC PRESENTATION | CLAUS IBSEN42
What's in the box?
● Splitter EIP
PUBLIC PRESENTATION | CLAUS IBSEN43
What is Apache Camel?
120+ Components
PUBLIC PRESENTATION | CLAUS IBSEN44
What is Apache Camel?
19 Data Formats
PUBLIC PRESENTATION | CLAUS IBSEN45
What is Apache Camel?
15 Expression Languages
PUBLIC PRESENTATION | CLAUS IBSEN46
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)
PUBLIC PRESENTATION | CLAUS IBSEN47
What is Apache Camel?
Test Kit● camel-test camel-test-spring● camel-test-blueprint camel-testng
PUBLIC PRESENTATION | CLAUS IBSEN48
What is Apache Camel?
Management● JMX
PUBLIC PRESENTATION | CLAUS IBSEN49
What is Apache Camel?
Tooling – Web console - HawtIO
http://hawt.io
PUBLIC PRESENTATION | CLAUS IBSEN50
What is Apache Camel?
Tooling – Eclipse Plugin – Fuse IDE
http://github.com/fusesource/fuseide
PUBLIC PRESENTATION | CLAUS IBSEN51
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
PUBLIC PRESENTATION | CLAUS IBSEN52
Deploying Camel
● Deployment Strategy● No Container Dependency● Lightweight & Embeddable
● Deployment Options● Standalone● WAR● Spring● JEE● OSGi● Cloud
PUBLIC PRESENTATION | CLAUS IBSEN53
Camel as a Client
● Java Client Application (no routes)
● Example● Upload a file to a FTP server
PUBLIC PRESENTATION | CLAUS IBSEN54
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
PUBLIC PRESENTATION | CLAUS IBSEN55
Creating new Camel Projects
● Using Command Shell
● From Eclipse
PUBLIC PRESENTATION | CLAUS IBSEN56
Creating new Camel Projects
● Maven Archetypes
PUBLIC PRESENTATION | CLAUS IBSEN57
Creating new Camel Projects
● camel-archetype-blueprint
PUBLIC PRESENTATION | CLAUS IBSEN58
Creating new Camel Projects
● Importing into Eclipse
Existing Maven Project
PUBLIC PRESENTATION | CLAUS IBSEN59
Creating new Camel Projects
● Testing Camel Projects
● ... from inside Eclipse
PUBLIC PRESENTATION | CLAUS IBSEN60
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
PUBLIC PRESENTATION | CLAUS IBSEN61
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”
PUBLIC PRESENTATION | CLAUS IBSEN62
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
PUBLIC PRESENTATION | CLAUS IBSEN63
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
PUBLIC PRESENTATION | CLAUS IBSEN64
Where do I get more information?
● Buy the Camel in Action book
http://manning.com/ibsen/
Use code ...camel40
… for 40% discount
PUBLIC PRESENTATION | CLAUS IBSEN65
Any Questions ?
● Contact● EMail: [email protected]● Twitter: @davsclaus● Linkedin: davsclaus● Blog: http://davsclaus.com