getting started with apache camel - jdays 2013

Post on 13-Dec-2014

992 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

In 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 new projects 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. We also take a moment to look at hawtio, then hot new web console tooling that allows you to get insight into your running Apache Camel applications, which has among others visual route diagrams with tracing/debugging and profiling capabilities. Before opening up for QA, we will share useful links where you can dive into learning more about Camel.

TRANSCRIPT

PUBLIC PRESENTATION | CLAUS IBSEN1

Getting started with Apache Camel

Claus Ibsen (@davsclaus)Principal Software Engineer, Red Hatjdays.se, november 2013

PUBLIC PRESENTATION | CLAUS IBSEN2

Your Speaker

● Principal Software Engineer at Red Hat

● Apache Camel● 5 years working full-time with Camel

● Author of Camel in Action book

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

PUBLIC PRESENTATION | CLAUS IBSEN3

Agenda

● What is Apache Camel?

● A little Example

● Riding Camel

● What's in the Camel box?

● Deploying Camel

● Creating new Camel Projects

● Hawtio – Camel Tooling

● Q and A

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)● 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

● Hawtio – Camel Tooling

● 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

● Hawtio – Camel Tooling

● Q and A

PUBLIC PRESENTATION | CLAUS IBSEN35

Riding Camel

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

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

● Twitter Example

● cd examples/camel-example-twitter-websocket

● mvn compile exec:java http://localhost:9090/index.html

PUBLIC PRESENTATION | CLAUS IBSEN39

Riding Camel

● More examples ...

... and further details at website.

http://camel.apache.org/examples

PUBLIC PRESENTATION | CLAUS IBSEN40

Agenda

● What is Apache Camel?

● A little Example

● Riding Camel

● What's in the box?

● Deploying Camel

● Creating new Camel Projects

● Hawtio – Camel Tooling

● Q and A

PUBLIC PRESENTATION | CLAUS IBSEN41

What's in the box?

PUBLIC PRESENTATION | CLAUS IBSEN42

What's in the box?

● Enterprise Integration Patterns

http://camel.apache.org/eip

PUBLIC PRESENTATION | CLAUS IBSEN43

What's in the box?

● Splitter EIP

PUBLIC PRESENTATION | CLAUS IBSEN44

What is Apache Camel?

120+ Components

PUBLIC PRESENTATION | CLAUS IBSEN45

What is Apache Camel?

19 Data Formats

PUBLIC PRESENTATION | CLAUS IBSEN46

What is Apache Camel?

15 Expression Languages

PUBLIC PRESENTATION | CLAUS IBSEN47

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 IBSEN48

What is Apache Camel?

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

PUBLIC PRESENTATION | CLAUS IBSEN49

What is Apache Camel?

Management● JMX● REST (w/ Jolokia)

PUBLIC PRESENTATION | CLAUS IBSEN50

What is Apache Camel?

Tooling – Web console - HawtIO

http://hawt.io

PUBLIC PRESENTATION | CLAUS IBSEN51

What is Apache Camel?

Tooling – Eclipse Plugin – Fuse IDE

http://github.com/fusesource/fuseide

PUBLIC PRESENTATION | CLAUS IBSEN52

What is Apache Camel?

Error Handling

PUBLIC PRESENTATION | CLAUS IBSEN53

What is Apache Camel?

try .. catch style

PUBLIC PRESENTATION | CLAUS IBSEN54

What is Apache Camel?

Dead Letter Channel (EIP style)

PUBLIC PRESENTATION | CLAUS IBSEN55

Agenda

● What is Apache Camel?

● A little Example

● Riding Camel

● What's in the Camel box?

● Deploying Camel

● Creating new Camel Projects

● Hawtio – Camel Tooling

● Q and A

PUBLIC PRESENTATION | CLAUS IBSEN56

Deploying Camel

● Deployment Strategy● No Container Dependency● Lightweight & Embeddable

● Deployment Options● Standalone● WAR● Spring● JEE● OSGi● Cloud

PUBLIC PRESENTATION | CLAUS IBSEN57

Camel as a Client

● Java Client Application (no routes)

● Example● Upload a file to a FTP server

PUBLIC PRESENTATION | CLAUS IBSEN58

Agenda

● What is Apache Camel?

● A little Example

● Riding Camel

● What's in the Camel box?

● Deploying Camel

● Creating new Camel Projects

● Hawtio – Camel Tooling

● Q and A

PUBLIC PRESENTATION | CLAUS IBSEN59

Creating new Camel Projects

● Using Command Shell

● From Eclipse

PUBLIC PRESENTATION | CLAUS IBSEN60

Creating new Camel Projects

● Maven Archetypes

PUBLIC PRESENTATION | CLAUS IBSEN61

Creating new Camel Projects

● camel-archetype-blueprint

PUBLIC PRESENTATION | CLAUS IBSEN62

Creating new Camel Projects

● Importing into Eclipse

Existing Maven Project

PUBLIC PRESENTATION | CLAUS IBSEN63

Agenda

● What is Apache Camel?

● A little Example

● Riding Camel

● What's in the Camel box?

● Deploying Camel

● Creating new Camel Projects

● Hawtio – Camel Tooling

● Q and A

PUBLIC PRESENTATION | CLAUS IBSEN64

Hawtio – Camel Tooling

http://hawt.io

PUBLIC PRESENTATION | CLAUS IBSEN65

Agenda

● What is Apache Camel?

● A little Example

● Riding Camel

● What's in the Camel box?

● Deploying Camel

● Creating new Camel Projects

● Hawtio – Camel Tooling

● Q and A

PUBLIC PRESENTATION | CLAUS IBSEN66

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 IBSEN67

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 IBSEN68

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 IBSEN69

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 IBSEN70

Any Questions ?

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

top related