Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 ·...

47
Copyright © 2010 Progress So3ware Corpora6on and/or its subsidiaries or affiliates. All rights reserved. A Progress So3ware Company A Progress So3ware Company 1 Riding the (Apache) Camel into the cloud! James Strachan Thursday, March 8, 2012

Transcript of Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 ·...

Page 1: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

A  Progress  So3ware  Company

1

Riding  the  (Apache)  Camel  into  the  cloud!

James  Strachan

Thursday, March 8, 2012

Page 2: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Your  speaker  today

James  Strachan• [email protected]

• twiNer:  @jstrachan

• blog:  hNp://macstrac.blogspot.com/

So3ware  Fellow  at  FuseSource• leaders  in  open  source  integra6on  &  messaging

• we  provide  training,  consul6ng,  support,  distribu6ons  &  tools  for  open  source  integra6on  so3ware

Open  Source  hacker• created  the  Groovy  programming  language

• created  Apache  Camel

• co-­‐founder  of– Apache  Ac6veMQ,  ServiceMix,  Geronimo

– Scalate

• lets  not  men6on  Jelly  :)

2

Thursday, March 8, 2012

Page 3: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Todays  talk

what’s  this  Apache  Camel  thing  anyway?

what  did  the  cloud  ever  do  for  us  anyway?

so  how’d  you  ride  this  Camel  in  the  cloud  then?

Q  &  A  (hopefully...)

3

Thursday, March 8, 2012

Page 4: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

What  are  Enterprise  Integra6on  PaNerns?

4

Thursday, March 8, 2012

Page 5: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Book  by  Gregor  &  Bobby!

5

Thursday, March 8, 2012

Page 6: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

A  selec6on  of  some  of  the  paNerns...

6

Thursday, March 8, 2012

Page 7: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

What  is  Apache  Camel?

http://camel.apache.org/

7

Thursday, March 8, 2012

Page 8: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

What  is  Apache  Camel?

8

Apache  Camel  is  a  Powerful  Open  SourceIntegra6on  Framework

based  on  knownEnterprise  Integra6on  PaNerns  

hNp://camel.apache.org/enterprise-­‐integra6on-­‐paNerns.html

Thursday, March 8, 2012

Page 9: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Lets  look  at  a  paNern!

9

Thursday, March 8, 2012

Page 10: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Message  Filter

10

Thursday, March 8, 2012

Page 11: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

<camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:topic:Quotes"/> <filter> <xpath>/quote/product = ‘widget’</xpath> <to uri="mqseries:WidgetQuotes"/> </filter> </route> </camelContext>

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Message  Filter  :  XML

11

Thursday, March 8, 2012

Page 12: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

<camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:topic:Quotes"/> <filter> <xpath>/quote/product = ‘widget’</xpath> <to uri="mqseries:WidgetQuotes"/> </filter> </route> </camelContext>

</beans>

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Message  Filter  :  Spring  XML

12

Thursday, March 8, 2012

Page 13: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

<camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:topic:Quotes"/> <filter> <xpath>/quote/product = ‘widget’</xpath> <to uri="mqseries:WidgetQuotes"/> </filter> </route> </camelContext>

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Message  Filter  :  XML

13

Thursday, March 8, 2012

Page 14: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Expressions  &  Predicates

14

15 ExpressionLanguages BeanShell Python

EL RubyGroovy Simple

JavaScript SpELJSR 223 SQLOGNL XPathMVEL XQueryPHP

Thursday, March 8, 2012

Page 15: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

URIs,  Endpoints  and  Components  (120+)

15

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

activemq cxf flatpack jasyptactivemq-journal cxfrs freemarker javaspace

amqp dataset ftp/ftps/sftp jbiatom db4o gae jcrbean direct hdfs jdbc

bean validation ejb hibernate jettybrowse esper hl7 jmscache event http jmx

cometd exec ibatis jpacrypto file irc jt/400

Thursday, March 8, 2012

Page 16: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

120+  components...

16

language properties seda stream

ldap quartz servlet string-template

mail/imap/pop3 quickfix sip test

mina ref smooks timer

mock restlet smpp validation

msv rmi snmp velocity

nagios rnc spring-integration vm

netty rng spring-security xmpp

nmr rss spring-ws xquery

printer scalate sql xslt

Thursday, March 8, 2012

Page 17: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

<camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="activemq:topic:Quotes"/> <filter> <xpath>/quote/product = ‘widget’</xpath> <to uri="mqseries:WidgetQuotes"/> </filter> </route> </camelContext>

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Message  Filter  :  XML

17

Thursday, March 8, 2012

Page 18: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Message  Filter  :  Java

from("activemq:topic:Quotes”). filter().xpath("/quote/product = ‘widget’"). to("mqseries:WidgetQuotes");

18

Thursday, March 8, 2012

Page 19: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Message  Filter  :  Java  Complete

package com.acme.quotes;

import org.apache.camel.builder.RouteBuilder;

public class MyRouteBuilder extends RouteBuilder { public void configure() {

// forward widget quotes to MQSeries from("activemq:topic:Quotes”). filter().xpath("/quote/product = ‘widget’"). to("mqseries:WidgetQuotes");

}}

19

Thursday, March 8, 2012

Page 20: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Message  Filter  :  Scala  

"direct:a" when(_.in == "<hello/>") { to("mock:a")}

20

Thursday, March 8, 2012

Page 21: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

<camelContext xmlns="http://camel.apache.org/schema/spring"> <package>com.acme.quotes</package></camelContext>

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Create  CamelContext  in  Spring

21

Thursday, March 8, 2012

Page 22: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

CamelContext context = new DefaultCamelContext();context.addRoutes(new MyRouteBuilder());context.start();

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Create  CamelContext  in  Java

22

Thursday, March 8, 2012

Page 23: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

IDE  support

Thursday, March 8, 2012

Page 24: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

IDE  support  (XML)

24

Thursday, March 8, 2012

Page 25: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Recap  -­‐  core  concepts  of  Camel

25

Enterprise  Integra6on  PaNerns Rou6ng Domain  Specific  Language  (DSL) Endpoints  &  URIs Predicates  &  Expressions Components  (lots  of  ‘em!) Test  Kit

             and  much  more  ...

Thursday, March 8, 2012

Page 26: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Beans

26

Thursday, March 8, 2012

Page 27: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Bean  as  a  Message  Translator

from("activemq:Incoming”). beanRef("myBeanName”, “someMethod"). to("activemq:Outgoing");

27

Thursday, March 8, 2012

Page 28: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Bean  

public class Foo {

public String someMethod(String name) { return “Hello “ + name; }}

28

Thursday, March 8, 2012

Page 29: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

public class Foo {

@Consume(uri="activemq:cheese") public Object onCheese(String name) { ... }}

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Binding  Beans  to  Camel  Endpoints

29

Thursday, March 8, 2012

Page 30: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

public class Foo {

public Object onCheese( @XPath("/foo/bar") String name, @Header("JMSCorrelationID") String id) { ... }}

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Binding  Method  Arguments

for  more  annota6ons  seehNp://camel.apache.org/bean-­‐integra6on.html

30

Thursday, March 8, 2012

Page 31: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

public class Foo { @Produce(uri="activemq:foo.bar") ProducerTemplate producer;

public void doSomething() { if (whatever) { producer.sendBody("<hello>world!</hello>"); } }}

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Sending  messages  to  endpoints

31

Thursday, March 8, 2012

Page 32: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Sending  messages  to  endpoints

public interface MyListener { String sayHello(String name);}

public class MyBean { @Produce(uri = "activemq:foo") protected MyListener producer;

public void doSomething() { // lets send a message String response = producer.sayHello("James"); }}

32

Thursday, March 8, 2012

Page 33: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Fastest  way  to  learn....

Manning  top-­‐15  year  to  date  (2010)

#10 #12Thursday, March 8, 2012

Page 34: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Fuse  IDE:  the  fastest  way  to  get  riding!

free  eclipse  based  tool  for  Apache  Camel  &  Ac6veMQ  etc• create  projects,  edit  routes,  run  stuff,  visualise,  trace  &  diagnose

hNp://fusesource.com/

34

Thursday, March 8, 2012

Page 35: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Cloud  schmoud!

35

Thursday, March 8, 2012

Page 36: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

How  we  got  here..

Opera6ng  Systems Virtual  Processes  (JVM  /  .Net  /  LLVM) Applica6on  Server Virtualisa6on  of  hardware CloudsMul6-­‐clouds?

36

Thursday, March 8, 2012

Page 37: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Riding  the  camel  into  the  cloud

37

Thursday, March 8, 2012

Page 38: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Tips  for  Camel  riding  in  the  cloud

Loose  coupling!•messaging  is  the  best  loose  coupling

–both  6me  and  loca6on!• what  if  you  can’t?

–discovery,  load  balancing  &  coordina6on  can  be  hard...

38

Thursday, March 8, 2012

Page 39: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

What  is  Fuse  Fabric?

hNp://fuse.fusesource.org/fabric/ open  source  PaaS  •for  running  your  integra6on  solu6ons  on  any  kind  of  cloud  •Apache  License  2.0–no  catches  or  hidden  bits  :)

•small  &  lightweight

39

Thursday, March 8, 2012

Page 40: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Fuse  Fabric  overview

40

CXFendpoints

ActiveMqCluster

Camelendpoints

FuseESB

Fabric

Fuse IDE for developers

Fuse Management Consolefor Operations

Agent

Thursday, March 8, 2012

Page 41: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Fuse  Fabric  Features

configura6on  registry• rolling  upgrades• easy  integra6on  with  source  control  &  releasing

• real  6me  updates  without  restar6ng/reinstalling

run6me  registry• discovery

• coordina6on• federated  services

dynamic  provisioning  within  the  cloud  • containers  /  processes

– on  exis7ng  machines  or  spin  up/down  on  cloud

• features  in  containers

41

Thursday, March 8, 2012

Page 42: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

How  Fuse  Fabric  helps  Camel  Riders

easy  lifecycle,  provision  &  versioning  of  Camel• as  bundles/wars/config  files

• rolling  upgrade  of  routes  &  support  mul6ple  version

centralised  environment  configura6on• use  profiles  to  keep  things  DRY

42

Thursday, March 8, 2012

Page 43: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Camel  Fabric  discovery  &  load  balancing

Invoking  a  remote  Camel  endpoint    from("activemq:someInput").

to("fabric:myName")

Exposing  a  Camel  endpoint  into  the  fabricfrom("fabric:myName:jetty:http://0.0.0.0:0").

to("bean:foo")

43

Thursday, March 8, 2012

Page 44: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Camel  -­‐  HA  Routes

Implements  Master  /  Hot  Standby  routes  

To  ensure  only  a  single  JVM  runs  a  par6cular  route  at  any  point  in  6me  from("master:foo:someUri")...

44

Thursday, March 8, 2012

Page 45: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Riding  Camel  in  the  cloud:  Summary

Camel  rocks• buy  the  book  &  try  Fuse  IDE

Use  messaging• easy  loose  coupling  in  the  cloud

Fuse  Fabric  can  help• fine  grained  lifecycle,  provisioning  &  configura6on• HA  Camel• discovery  &  load  balancing  when  you  can’t  use  messaging

45

Thursday, March 8, 2012

Page 46: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

What  should  I  do  next?  

Ride  that  Camel• hNp://camel.apache.org/

Download  Fuse  IDE• hNp://fusesource.com

Fuse  Fabric•hNp://fuse.fusesource.org/fabric/

Don’t  get  the  hump!

46

Thursday, March 8, 2012

Page 47: Riding*the*(Apache)*Camel*into*the*cloud! - QCon London 2020 · 2014-09-17 · Camel*Fabric*discovery*&*load*balancing Invoking*aremote*Camel*endpoint* from("activemq:someInput").

Copyright  ©  2010  Progress  So3ware  Corpora6on  and/or  its  subsidiaries  or  affiliates.  All  rights  reserved.   A  Progress  So3ware  Company

Any  Ques6ons?

47

twiNer:  @jstrachan  #fusenews

hNp://fusesource.com

Thursday, March 8, 2012