simplify your integrations with apache camel

Post on 13-Jan-2015

954 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

To build up any non-trivial business processing, you may have to connect systems that are exposed by web-services, fire off events over message queues, notify users via email or social networking, and much more. Apache Camel is a lightweight integration framework that helps you connect systems in a consistent and reliable way. Focus on the business reasons behind what's being integrated, not the underlying details of how.

TRANSCRIPT

11

Simplify Enterprise Integration

WithApache Camel

Christian PostaPrincipal Consultant and Architect

12/16/13

2

• What is Integration?

• What is Apache Camel

• Why Apache Camel?

• Example

• Questions?

Agenda

3

Your speakerChristian PostaBlog: http://christianposta.com/blog

Twitter: @christianposta

Email: christian@redhat.com

ceposta@apache.org

• Principal Consultant and Architect at Red Hat (FuseSource)

• Based in Phoenix, AZ

• Committer on Apache Camel, ActiveMQ, Apollo

• PMC on ActiveMQ

• Author: Essential Camel Components DZone Refcard

Poll: Estimate how long to implement the following usecase:

Consume XML messages from a queue, call a SOAP webservice if the message is an “alert” message, store data to the file system

Options:

• Less than 1 day

• A few Days

• A few weeks

• A few months

• Cannot be done

4

5 5

What is Integration?

6

Integration?

7

Integration…

8

Just use one computer.

No integration needed.

9

• Off the shelf? Home Grown? Acquisition?

• Platforms

• Protocols / Data Formats

• Data Formats

• Timing

• Organizational mismatch

Why is integration hard?

10

Commercial Solutions?

11

Enterprise Service Bus?

12

Enterprise Service Bus…

13

• Protocol mediation

• Routing

• Transformation

• EIPs

• Start small, build up

• Open Source

• Community driven

Extract the heart of ESB

14

• Common language!!!!!

• Specific context

• Forces at work

• Concrete solution

• Guidance

• Other patterns…

• 65 patterns

Patterns FTW!

1515

What is Apache Camel?

16

Proud parents of Camel

17

Apache CamelApache Camel is an open-source,

light-weight, integration library.

Use Camel to integrate disparate systems

that speak different protocols and data formats

18

• Can carry more weight that other beasts?

• James fancied cigarettes?

• A horse designed by committee?

Why the name Camel?

ConciseApplicationMessagingExchangeLanguage

19

• Light-weight integration library

• Enterprise Integration Patterns

• Components

• Domain Specific Language

• Routing and Mediation (like an ESB?)

• Runs in any container (or stand alone)

What is Apache Camel?

20

• An integration library• Routing (content-based, dynamic, rules-engine…)

• Mediation (xformations, protocols, wire transports…)

• DSL

• Can build an ESB (real ESB.. Not just box in the middle)

• Many options based on Camel!• Fuse ESB / JBoss Fuse

• Apache ServiceMix (Karaf + Camel)

• Talend, wso2, others…

• Not tied to vendor lock-in and commercial licenses!

Not an ESB…per-se…

21

Very popular

• Used at top companies in finance, shipping,

retail/e-retail, health care, airline

reservations, etc

• E*Trade: http://goo.gl/FDqgpV

• Sabre: http://goo.gl/RrWcQ5

• CERN: http://goo.gl/vEO7zR

22

Open source

• Apache Software Foundation

• ASL v 2.0 Licensed

• Vibrant community

• Jira, mailing list, github

• Lots of contributions! Check out the components!

2323

Quick Example

24

Quick Example

File System Message Oriented Middleware

25

Quick Example

From A Send to BFilter message

26

Quick Example

from(A) to(B)filter(predicate)

27

Quick Example

from(A) .to(B).filter(isWidget)

28

Quick Example

isWidget = xpath(“/quote/product = ‘widget’”);

from(A) .filter(isWidget). to(B)

2929

Using Camel

30

Pipes and Filters

• Step by Step – “Processors” in Camel terminology

• Complex processing – “Routes”

• Flexible

• Testing

• Reuse

31

• Defined in Java, XML, Scala, Groovy

• Step by step processing of a message:

• Consumer – Listen for incoming message

• Zero or more “filters” or Processors

• Producer – Send outgoing message

• Number of processing filters, or “Processors” in Camel-speak

• EIPs

• Tranform, redirect, enrich

Camel Routes

32

Domain Specific Language

• Domain specific (integration)

• Used to build and describe Camel Routes

• Embedded within a general programming language

• Java, Spring XML, Scala, Groovy

• Take advantage of existing tools

• Fluent builders (builder pattern…)• from(“..”).enrich(“…”).filter(“..”).to(“…”);

33

Java DSLpublic class OrderProcessorRouteBuilder extends RouteBuilder {

@Override public void configure() throws Exception {

from(“activemq:orders”).choice()

.when(header(“customer-rating”).isEqualTo(“gold”)) .to(“ibmmq:topic:specialCustomer”) .otherwise() .to(“ftp://user@host/orders/regularCustomers”) .end() .log(“received new order ${body.orderId}”) .to(“ibatis:storeOrder?statementType=Insert”); }}

34

Spring XML DSL        <route id=“processOrders”>

            <from uri=“activemq:orders”/>

<choice>

<when>

<simple>${header.customer-rating} == ‘gold’</simple>

<to uri=“ibmmq:topic:specialCustomer”>

</when>

<otherwise>

<to uri=“ftp://user@host/orders/regularCustomers” />

</otherwise>

</choice>

<log message=“received new order ${body.orderId}”/>

            <to uri=“ibatis:storeOrder?statementType=Insert”/>

        </route>

35

• Message Routing

• Transformation

• Aggregation

• Splitting

• Resequencer

• Routing Slip

• Enricher

• All 65 from the book!

Enterprise Integration Patterns

36

• Prepackaged bits of code

• Highly configurable

• Maximum interoperability

• Used to build “Adapters” to existing systems

• Don’t reinvent the wheel and end up with a box

Components

37

Components

• ActiveMQ, Websphere, Weblogic (JMS)

• AMQP

• ATOM feeds

• AWS (S3, SQS, SNS, others)

• Bean

• Cache (EHCache)

• CXF (JAX-WS, JAX-RS)

• EJB

• Drools

• File

• FTP

• Google App Engine

• GMail

• HTTP

• IRC

• jclouds

• JDBC

• Jetty

• Twitter

• MQTT

• MyBatis

• JPA

• Spring Integration

• Spring Web Services

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

To see list of all

components!!

38

• URI format:• scheme:localPart[?options]

• scheme: identifies the “component”

• localPart: specific to the component

• options: is a list of name-value pairs

• Creates endpoints based on configuration

• Route endpoint “factories”

• Integrate with Camel Routes by creating producer/consumer endpoints

Components

from(“aws-sqs://demo?defaultVisibilityTimeout=2”)

39

Another Example

public class MyExampleRouteBuilder extends RouteBuilder {

@Override public void configure() throws Exception {

from(“aws-sqs://demo?defaultVisibilityTimeout=2”)

.setHeader(“type”).jsonpath(“$[‘type’]”)

.filter(simple(“${header.type} == ‘login’”)

.to(“jms:quote”); }}

40

Test Framework• Powerful way to test your Camel routes

• http://camel.apache.org/mock.html

• Uses Mocks

• Mocks vs Stubs? • http://martinfowler.com/articles/mocksArentStubs.html

• Provides declarative testing mechanism

• Declare

• Test

• Assert

41

Management with HawtIO

http://hawt.io

42

Developer Tooling Support

Fuse IDE

43

JBoss Fuse (aka Fuse ESB)Integrate Everything!

44

More info on JBoss Fuse…

https://www.redhat.com/products/jbossenterprisemiddleware/fuse/

http://www.jboss.org/products/fuse

4545

Live Demo

4646

Resources

47

Presentation Resources

48

Professional TrainingCamel Development

with Red Hat JBoss Fuse (Online Training)

http://www.redhat.com/training/courses/jb421r/

Red Hat JBoss A-MQ

Development and Deployment (Online Training)

https://www.redhat.com/training/courses/jb437r/

Red Hat Certificate of

Expertise in Camel Development

http://www.redhat.com/training/certifications/jbcd-camel-development/

49

Dzone Refcardz

• Camel Essential Components • http://refcardz.dzone.com/refcardz/essential-camel-components

• Essential EIP with Apache Camel• http://refcardz.dzone.com/refcardz/enterprise-integration

REFCARDZ

50

Apache Community• http://camel.apache.org

• Mailing list: users@camel.apache.org

• Nabble Archive: http://camel.465427.n5.nabble.com/Camel-Users-f465428.html

• Source code: https://git-wip-us.apache.org/repos/asf?p=camel.git

• Blogs, Articles, Examples• http://www.davsclaus.com

• http://www.christianposta.com/blog

• http://www.ossmentor.com/

• http://camel.apache.org/articles.html

• http://camel.apache.org/user-stories.html

• http://camel.apache.org/user-stories.html

51

Apache Camel Books

52

Apache Camel Books

53

Apache Camel Books

5454

QuestionsQuestions

top related