40

Simplify integrations-final-pdf

  • Upload
    ceposta

  • View
    1.065

  • Download
    0

Embed Size (px)

DESCRIPTION

My DevNation 2014 talk, Camel, Fabric8, Devops

Citation preview

Page 1: Simplify integrations-final-pdf
Page 2: Simplify integrations-final-pdf

2 2

Simplify Enterprise Integration With

Apache Camel and Fuse

Christian Posta Principal Middleware Specialist/Architect

Page 3: Simplify integrations-final-pdf

3

•  What is Integration?

•  Camel… what?

•  Honestly… Camel Rox!

•  Demo time! •  Questions? Yah… over beer J

Agenda

Page 4: Simplify integrations-final-pdf

4

Your speaker Christian Posta Blog: http://christianposta.com/blog

Twitter: @christianposta

Email: [email protected]

•  Principal Middleware Specialist/Architect

•  Based in Phoenix, AZ

•  Committer on Apache Camel, ActiveMQ, Apollo

•  Author: Essential Camel Components DZone Refcard

Page 5: Simplify integrations-final-pdf

5 5

What is Integration?

Page 6: Simplify integrations-final-pdf

6

Integration?

Page 7: Simplify integrations-final-pdf

7

•  Off the shelf? Home Grown? Acquisition? •  Platforms •  Protocols / Data Formats •  Data Formats •  Timing •  Organizational mismatch

Integration L

Page 8: Simplify integrations-final-pdf

8

•  Common language!!!!! •  Specific context •  Forces at work •  Concrete solution •  Guidance •  65 patterns

Patterns FTW!

Page 9: Simplify integrations-final-pdf

9

•  Protocol mediation •  Routing, Transformation, EIPs •  Start small, build up, ESB if needed •  Open Source •  Community driven

Lightweight integration, right?

Page 10: Simplify integrations-final-pdf

Consume XML doc from file system, put onto messaging queue, separately consume from queue, do some routing, archive to file system. Logging, tracing, debugging. Also implement flexibility, HA messaging, scalability.

•  Clearly cannot be done •  A few months •  A few weeks •  A few Days •  < 1 day

10

Page 11: Simplify integrations-final-pdf

11 11

Camel… right?

Page 12: Simplify integrations-final-pdf

12

Apache Camel Apache Camel is an open-source,

light-weight, integration library.

Use Camel to integrate disparate systems that speak different protocols and data formats

Page 13: Simplify integrations-final-pdf

13

•  Light-weight integration library •  Domain Specific Language •  Enterprise Integration Patterns •  Components •  Routing and Mediation (like an ESB?) •  Runs in any container (or stand alone)

• 

What is Apache Camel?

Page 14: Simplify integrations-final-pdf

14

Quick Example

File System Message Oriented Middleware

Page 15: Simplify integrations-final-pdf

15

Quick Example

From A Send to B Filter message

Page 16: Simplify integrations-final-pdf

16

Quick Example

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

Page 17: Simplify integrations-final-pdf

17

Quick Example

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

Page 18: Simplify integrations-final-pdf

18

Quick Example

isWidget = xpath(“/quote/product = ‘widget’”); from(A) .filter(isWidget). to(B)

Page 19: Simplify integrations-final-pdf

19 19

Honestly! Camel Rox!

Page 20: Simplify integrations-final-pdf

20

•  Defined in Java, XML, Scala, Groovy DSL •  Step by step processing of a message:

•  Consumer – Listen for incoming message •  Zero or more “filters” or Processors •  Producer – Send outgoing message

•  Pipeline of “filters” or “processors” •  EIPs •  Tranformation •  Expressions •  Exceptions

• 

Camel Routes

Page 21: Simplify integrations-final-pdf

21

• 

Domain Specific Language •  Domain specific (integration)

•  Build and describe integration flows

•  Embedded within a general programming language

•  Java, Spring XML, Scala, Groovy

•  Take advantage of existing tools

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

Page 22: Simplify integrations-final-pdf

22

public 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”); }}

Page 23: Simplify integrations-final-pdf

23

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

Page 24: Simplify integrations-final-pdf

24

•  Message Routing •  Transformation •  Aggregation •  Splitting •  Resequencer •  Routing Slip •  Enricher

Enterprise Integration Patterns

Page 25: Simplify integrations-final-pdf

25

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!!

Page 26: Simplify integrations-final-pdf

26

•  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”)

Page 27: Simplify integrations-final-pdf

27

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”);

}}

Page 28: Simplify integrations-final-pdf

28

• 

Management with HawtIO http://hawt.io

Page 29: Simplify integrations-final-pdf

29

• 

Developer Tooling Support

Page 30: Simplify integrations-final-pdf

30

JBoss Fuse Integrate Everything!

Page 31: Simplify integrations-final-pdf

Fabric8 (JBoss Fuse + Fabric)

•  http://fabric8.io •  Simplifies deployments, management •  Blurs the line of PaaS •  Provides cluster capabilities, coordination •  Containers and Profiles •  Provides additional management tools for

centralized configuration and monitoring 31

Page 32: Simplify integrations-final-pdf

32

Fabric8

Page 33: Simplify integrations-final-pdf

33 33

Resources

Page 34: Simplify integrations-final-pdf

34

Professional Training Camel Development with Red Hat JBoss Fuse

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

Red Hat JBoss A-MQ Development and Deployment https://www.redhat.com/training/courses/jb437r/

Red Hat Certificate of Expertise in Camel Development http://www.redhat.com/training/certifications/jbcd-camel-development/

Page 35: Simplify integrations-final-pdf

35

• 

Books

Page 36: Simplify integrations-final-pdf

36

• 

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

Page 37: Simplify integrations-final-pdf

37 37

Questions

Page 38: Simplify integrations-final-pdf

Consume XML doc from file system, put onto messaging queue,

38

Page 39: Simplify integrations-final-pdf

Separately consume from queue, do some routing, archive to file system.

39

Page 40: Simplify integrations-final-pdf

Logging, tracing, debugging. Also implement flexibility, HA messaging, scalability.

40