SlideShare a Scribd company logo
Service Oriented Integration
 With Apache ServiceMix
       Bruce Snyder
       bsnyder@apache.org
       21 Nov 2008
       Malmo, Sweden
Agenda




            Enterprise Service Bus
            Java Business Integration
            Apache ServiceMix ESB




                                    2
What is
 an
ESB?      3
What is an ESB?



"An Enterprise Service Bus (ESB) is a new architecture that exploits Web
services, messaging Service Bus (ESB) is a and transformation. ESBs
 "An Enterprise middleware, intelligent routing, new architecture that
act as a lightweight, ubiquitous integration backbone through which software
 exploits Web services, messaging middleware, intelligent
services and application components flow.” (Gartner)
routing, and transformation. ESBs act as a lightweight,
ubiquitous integration backbone through which software
services and application components flow.”
(Gartner)




                                                                        4
What is an ESB?


An ESB acts as a shared messaging layer for connecting applications and other
services throughout ana sharedcomputing infrastructure. It supplements its
 An ESB acts as enterprise messaging layer for connecting
core asynchronous messaging services throughout an enterprise
 applications and other backbone with intelligent transformation and
routing to ensure messages are passed reliably. Services participate in the ESB
using either web services messaging supplements its core
 computing infrastructure. It standards or JMS (LooselyCoupled.com)
asynchronous messaging backbone with intelligent
transformation and routing to ensure messages are passed
reliably. Services participate in the ESB using either web
services messaging standards or JMS
(LooselyCoupled.com)




                                                                             5
What is an ESB?



An ESB is an open standards, message-based, distributed, integration solution
 An ESB is an open standards, message-based, distributed,
that provides routing, invocation, and mediation services to facilitate the
interactions of disparate distributed information technology resources and
 integration solution that provides routing, invocation,
(applications, services, information, platforms) in a reliable manner. (Brenda
Michelson, Elemental Links) facilitate the interactions of disparate
 mediation services to
distributed information technology resources (applications,
services, information, platforms) in a reliable manner.
(Brenda Michelson, Elemental Links)




                                                                            6
Do I need an ESB?

          ESB Planning Process




                                 7
What
 is
JBI?   8
What is JBI?




JBI defines an architecture that allows the construction of
integration systems from plug-in components, that
interoperate through the method of mediated message
exchange.
(JBI 1.0 Spec)




                                                         9
Java Business Integration




                            10
Java Business Integration




                            11
JBI Normalized Message




                         12
JBI Packaging




                13
Apache ServiceMix




       http://servicemix.apache.org/
                                       14
Apache ServiceMix Architecture




                                 15
ServiceMix Features

   Supports many protocols
        File, FTP, HTTP/S, JMS, SMTP, SOAP, TCP, XMPP
   Support many engines
        Apache Camel, Apache CXF, Apache ODE, Drools,
         OS Workflow, POJOs, Quartz, Scripting, Saxon
         XQuery and XSLT, WS-Notification
   Support for Security
        JAAS, WS-Security
   Web Container/App Server Integration
        Geronimo, JBoss, Jetty, Tomcat, Weblogic,
         Websphere

                                                         16
Apache Software Foundation




 Apache
 Software
Foundation
                             17
Message Routing




                  18
Message Routing




                  19
Example




          20
Configuration




                21
file-poller-su



<beans xmlns:file='http://servicemix.apache.org/file/1.0'
       xmlns:myApp="http://com.mycompany/myapp">

  <file:poller service="myapp:file"
             endpoint="poller"
             file="file:///Users/bsnyder/poller/inbox"
             targetService="myapp:wiretap"
             targetEndpoint="logger" />
</beans>




                                                            22
eip-wiretap-su



<beans xmlns:eip="http://servicemix.apache.org/eip/1.0"
       xmlns:myapp="http://mycompany.com/myapp">

  <eip:wire-tap service="myapp:wiretap" endpoint="endpoint">
    <eip:target>
      <eip:exchange-target service="myapp:cbr" />
    </eip:target>
    <eip:inListener>
      <eip:exchange-target service="myapp:persist" />
    </eip:inListener>
  </eip:wire-tap>

</beans>



                                                           23
camel-persist-su


public class PersistOrderRoute extends RouteBuilder {
    public void configure() {
   from("jbi:endpoint:http://mycompany.com/persist/order")
      .convertBodyTo(Order.class)
      .to("jpa:com.mycompany.Order?persistenceUnit=order-proc")
      .convertBodyTo(Order.class);
    }}


-------------------------------------------------

<beans xmlns:camel=”http://activemq.apache.org/camel">
  <camel:camelContext id="camel">
    <package>com.mycompany.persistence</package>
  </camel:camelContext>
</beans>


                                                            24
eip-cbr-su


<beans xmlns:eip="http://servicemix.apache.org/eip/1.0"
       xmlns:myapp="http://mycompany.com/myapp">

  <eip:content-based-router service="myapp:cbr"
    endpoint="endpoint">
    <eip:rules>
      <eip:routing-rule>
        <eip:predicate>
          <eip:xpath-predicate
            xpath="/message/cheese/text() = 'gouda'" />
        </eip:predicate>
        <eip:target>
          <eip:exchange-target service="myapp:queue1" />
        </eip:target>
      </eip:routing-rule>
...


                                                           25
eip-cbr-su

...
      <eip:routing-rule>
        <eip:predicate>
          <eip:xpath-predicate
            xpath="/message/cheese/text() = 'swiss'" />
        </eip:predicate>
        <eip:target>
          <eip:exchange-target service="myapp:queue2" />
        </eip:target>
      </eip:routing-rule>
      <eip:routing-rule>
        <eip:target>
          <eip:exchange-target service="myapp:queue3" />
        </eip:target>
      </eip:routing-rule>
    </eip:rules>
  </eip:content-based-router>

                                                           26
jms-producer-su


<beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
       xmlns:myapp="http://mycompany.com/myapp
       xmlns:amq="http://activemq.org/config/1.0">

    <jms:endpoint service="myapp:queue1"
                  endpoint="myProvider"
                  role="provider"
                  destinationStyle="queue"
                  jmsProviderDestinationName="queue1"
                  connectionFactory="#connectionFactory" />

    <jms:endpoint service="myapp:queue2"
                  endpoint="myProvider"
                  role="provider"
                  destinationStyle="queue"
                  jmsProviderDestinationName="queue2"
                  connectionFactory="#connectionFactory"/>
                                                              27
jms-producer-su



...
      <jms:endpoint service="myapp:queue3"
                    endpoint="myProvider"
                    role="provider"
                    destinationStyle="queue"
                    jmsProviderDestinationName="queue3"
                    connectionFactory="#connectionFactory"/>

      <amq:connectionFactory id="connectionFactory"
        brokerURL="tcp://localhost:61616" />

</beans>




                                                               28
JBI Packaging




                29
Visualization




                30
Distribution of ServiceMix Containers




                                        31
Eclipse IDE Tooling For ServiceMix

   Eclipse SOA Tooling Platform (STP) Project
        http://eclipse.org/stp

   Spagic
        http://spagic.com/
   SOPERA ServiceMixTools
        http://sopera.de/en/products/sopera-servicemixtools/




                    Eclipse SOA Tools Platform (STP) Project


                                                                32
Eclipse Tooling




         Eclipse SOA Tools Platform (STP) Project

                                               33
What is Apache Camel?




    http://activemq.apache.org/camel/
                                        34
What is EIP?




               35
Example Pattern: Content Based Router




RouteBuilder builder = new RouteBuilder() {
   public void configure() {
     from("activemq:TEST.QUEUE").choice()
      .when(header("foo").isEqualTo("bar")).
         to("bean:MyBean?methodName=processMessage")
      .when(header("foo").isEqualTo("cheese")).
         to("file:/opt/dropbox")
      .otherwise().to("log:Test");
   }
};                                                     36
Example Pattern: Content Based Router

<camelContext id="buildSimpleRouteWithChoice"
    xmlns="http://activemq.apache.org/camel/schema/spring">
  <route>
    <from uri="file:/Users/bsnyder/smxdropbox"/>
    <choice>
      <when>
        <predicate>
           <header name="foo"/>
           <isEqualTo value="bar"/>
        </predicate>
        <to uri="ftp://hostname:1234/"/>
      </when>
      <when>
        <predicate>
           <header name="foo"/>
           <isEqualTo value="cheese"/>
        </predicate>
        <to uri="mina:tcp:remotehost:9876"/>
      </when>
      <otherwise><to uri="imap:mymailhost:110"/></otherwise>
    </choice>
  </route>
</camelContext>
                                                               37
Camel Makes Routing Much Easier!

                   from(“http://localhost:8080/requests/”).
                       tryBlock().
                           to(“activemq:queue:requests”).
                           setOutBody(constant(“<ack/>”)).
                       handle(Throwable.class).
                           setFaultBody(constant(“<nack/>”));

                   from((“activemq:queue:requests?transacted=true”).
                       process(requestTransformer).
                       to(“http://host:8080/Request”).
                       filter(xpath(“//nack”)).
                       process(nackTransformer).
                       to(“jdbc:store”);

                   from(“http://localhost:8080/responses/”).
                       tryBlock().
                           to(“activemq:queue:responses”).
                           setOutBody(constant(“<ack/>”)).
                       handle(Throwable.class).
                           setFaultBody(constant(“<nack/>”));

                   from(“activemq:queue:responses?transacted=true”).
                       process(responseTransformer).
                       to(“jdbc:store”);

                   from(“http://localhost:8080/pull/”).
                       to(“jdbc:load”);


                                                           38
What’s Coming in ServiceMix 4.0




  Apache
 ServiceMix
     4.0                          39
ServiceMix 4.0 Building Blocks

   Runtime: OSGi (Apache Felix)
        JBI support still intact!
        NMR is a OSGi service
   Message Broker: Apache ActiveMQ
   Web Services: Apache CXF
   Routing Engine: Apache Camel




                                      40
Thank You for Attending!




   Questions?

                           41

More Related Content

PDF
Service Oriented Integration With ServiceMix
PPT
An Introduction to Apache ServiceMix 4 - FUSE ESB
PPT
ServiceMix 4 -- Integrating OSGi with JBI
PDF
Service Oriented Integration with ServiceMix
PPTX
Apache servicemix1
PDF
RESTful web service with JBoss Fuse
PDF
WebSockets with Spring 4
PDF
Moxi - Memcached Proxy
Service Oriented Integration With ServiceMix
An Introduction to Apache ServiceMix 4 - FUSE ESB
ServiceMix 4 -- Integrating OSGi with JBI
Service Oriented Integration with ServiceMix
Apache servicemix1
RESTful web service with JBoss Fuse
WebSockets with Spring 4
Moxi - Memcached Proxy

What's hot (20)

PPTX
cache concepts and varnish-cache
PPTX
Asynchronous Web Programming with HTML5 WebSockets and Java
PDF
Nuts and Bolts of WebSocket Devoxx 2014
PDF
ActiveMQ In Action
PDF
Memcached Code Camp 2009
PPTX
Servletarchitecture,lifecycle,get,post
PPTX
Using memcache to improve php performance
PDF
Realtime web application with java
PDF
Tomcatx performance-tuning
PDF
Camel and JBoss
KEY
Load Balancing with Apache
PDF
Caching with Memcached and APC
KEY
DjangoCon 2010 Scaling Disqus
PDF
OSGi ecosystems compared on Apache Karaf - Christian Schneider
PPTX
자바 성능 강의
PDF
EIP In Practice
PDF
Memcached Study
PPTX
Web sockets in Java
PDF
Caching with Varnish
KEY
How Flipkart scales PHP
cache concepts and varnish-cache
Asynchronous Web Programming with HTML5 WebSockets and Java
Nuts and Bolts of WebSocket Devoxx 2014
ActiveMQ In Action
Memcached Code Camp 2009
Servletarchitecture,lifecycle,get,post
Using memcache to improve php performance
Realtime web application with java
Tomcatx performance-tuning
Camel and JBoss
Load Balancing with Apache
Caching with Memcached and APC
DjangoCon 2010 Scaling Disqus
OSGi ecosystems compared on Apache Karaf - Christian Schneider
자바 성능 강의
EIP In Practice
Memcached Study
Web sockets in Java
Caching with Varnish
How Flipkart scales PHP
Ad

Similar to Service-Oriented Integration With Apache ServiceMix (20)

KEY
Aimaf
PDF
TS 4839 - Enterprise Integration Patterns in Practice
PDF
ApacheCon NA 2010 - Building Apps with Apache Tuscany
PPTX
Hazelcast and MongoDB at Cloud CMS
PPT
Mule web services
PPTX
Real world #microservices with Apache Camel, Fabric8, and OpenShift
PPTX
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
PPT
Mule and web services
PPTX
Micro service architecture
PDF
Using Istio to Secure & Monitor Your Services
PDF
Taking Apache Camel For a Ride
PPT
Mule and web services
PDF
Workshop apache camel
PDF
Toulouse Java User Group
PPTX
StrongLoop Overview
PPTX
API gateway setup
PDF
Monitoring a Kubernetes-backed microservice architecture with Prometheus
PDF
Integrating with SAP FIX and HL7
PDF
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
PDF
Faster & Greater Messaging System HornetQ zzz
Aimaf
TS 4839 - Enterprise Integration Patterns in Practice
ApacheCon NA 2010 - Building Apps with Apache Tuscany
Hazelcast and MongoDB at Cloud CMS
Mule web services
Real world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Mule and web services
Micro service architecture
Using Istio to Secure & Monitor Your Services
Taking Apache Camel For a Ride
Mule and web services
Workshop apache camel
Toulouse Java User Group
StrongLoop Overview
API gateway setup
Monitoring a Kubernetes-backed microservice architecture with Prometheus
Integrating with SAP FIX and HL7
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
Faster & Greater Messaging System HornetQ zzz
Ad

More from Bruce Snyder (11)

PDF
Beyond Horizontal Scalability: Concurrency and Messaging Using Spring
PDF
Enterprise Messaging With Spring JMS
PDF
Styles of Applicaton Integration Using Spring
PDF
ActiveMQ In Action - ApacheCon 2011
PDF
Using Enterprise Integration Patterns as Your Camel Jockey
PDF
Apache ActiveMQ and Apache ServiceMix
PDF
Messaging With Apache ActiveMQ
PDF
Enterprise Messaging With ActiveMQ and Spring JMS
PDF
Taking Apache Camel For A Ride
PDF
Messaging With ActiveMQ
PDF
Taking Apache Camel For A Ride
Beyond Horizontal Scalability: Concurrency and Messaging Using Spring
Enterprise Messaging With Spring JMS
Styles of Applicaton Integration Using Spring
ActiveMQ In Action - ApacheCon 2011
Using Enterprise Integration Patterns as Your Camel Jockey
Apache ActiveMQ and Apache ServiceMix
Messaging With Apache ActiveMQ
Enterprise Messaging With ActiveMQ and Spring JMS
Taking Apache Camel For A Ride
Messaging With ActiveMQ
Taking Apache Camel For A Ride

Recently uploaded (20)

PDF
KodekX | Application Modernization Development
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Advanced Soft Computing BINUS July 2025.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Machine learning based COVID-19 study performance prediction
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Advanced IT Governance
PPTX
MYSQL Presentation for SQL database connectivity
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Empathic Computing: Creating Shared Understanding
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
Electronic commerce courselecture one. Pdf
PPTX
Cloud computing and distributed systems.
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
KodekX | Application Modernization Development
Network Security Unit 5.pdf for BCA BBA.
Advanced Soft Computing BINUS July 2025.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Machine learning based COVID-19 study performance prediction
Review of recent advances in non-invasive hemoglobin estimation
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Advanced IT Governance
MYSQL Presentation for SQL database connectivity
GamePlan Trading System Review: Professional Trader's Honest Take
NewMind AI Weekly Chronicles - August'25 Week I
Empathic Computing: Creating Shared Understanding
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
Electronic commerce courselecture one. Pdf
Cloud computing and distributed systems.
Understanding_Digital_Forensics_Presentation.pptx
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx

Service-Oriented Integration With Apache ServiceMix

  • 1. Service Oriented Integration With Apache ServiceMix Bruce Snyder [email protected] 21 Nov 2008 Malmo, Sweden
  • 2. Agenda  Enterprise Service Bus  Java Business Integration  Apache ServiceMix ESB 2
  • 4. What is an ESB? "An Enterprise Service Bus (ESB) is a new architecture that exploits Web services, messaging Service Bus (ESB) is a and transformation. ESBs "An Enterprise middleware, intelligent routing, new architecture that act as a lightweight, ubiquitous integration backbone through which software exploits Web services, messaging middleware, intelligent services and application components flow.” (Gartner) routing, and transformation. ESBs act as a lightweight, ubiquitous integration backbone through which software services and application components flow.” (Gartner) 4
  • 5. What is an ESB? An ESB acts as a shared messaging layer for connecting applications and other services throughout ana sharedcomputing infrastructure. It supplements its An ESB acts as enterprise messaging layer for connecting core asynchronous messaging services throughout an enterprise applications and other backbone with intelligent transformation and routing to ensure messages are passed reliably. Services participate in the ESB using either web services messaging supplements its core computing infrastructure. It standards or JMS (LooselyCoupled.com) asynchronous messaging backbone with intelligent transformation and routing to ensure messages are passed reliably. Services participate in the ESB using either web services messaging standards or JMS (LooselyCoupled.com) 5
  • 6. What is an ESB? An ESB is an open standards, message-based, distributed, integration solution An ESB is an open standards, message-based, distributed, that provides routing, invocation, and mediation services to facilitate the interactions of disparate distributed information technology resources and integration solution that provides routing, invocation, (applications, services, information, platforms) in a reliable manner. (Brenda Michelson, Elemental Links) facilitate the interactions of disparate mediation services to distributed information technology resources (applications, services, information, platforms) in a reliable manner. (Brenda Michelson, Elemental Links) 6
  • 7. Do I need an ESB? ESB Planning Process 7
  • 9. What is JBI? JBI defines an architecture that allows the construction of integration systems from plug-in components, that interoperate through the method of mediated message exchange. (JBI 1.0 Spec) 9
  • 14. Apache ServiceMix http://servicemix.apache.org/ 14
  • 16. ServiceMix Features  Supports many protocols  File, FTP, HTTP/S, JMS, SMTP, SOAP, TCP, XMPP  Support many engines  Apache Camel, Apache CXF, Apache ODE, Drools, OS Workflow, POJOs, Quartz, Scripting, Saxon XQuery and XSLT, WS-Notification  Support for Security  JAAS, WS-Security  Web Container/App Server Integration  Geronimo, JBoss, Jetty, Tomcat, Weblogic, Websphere 16
  • 17. Apache Software Foundation Apache Software Foundation 17
  • 20. Example 20
  • 22. file-poller-su <beans xmlns:file='http://servicemix.apache.org/file/1.0' xmlns:myApp="http://com.mycompany/myapp"> <file:poller service="myapp:file" endpoint="poller" file="file:///Users/bsnyder/poller/inbox" targetService="myapp:wiretap" targetEndpoint="logger" /> </beans> 22
  • 23. eip-wiretap-su <beans xmlns:eip="http://servicemix.apache.org/eip/1.0" xmlns:myapp="http://mycompany.com/myapp"> <eip:wire-tap service="myapp:wiretap" endpoint="endpoint"> <eip:target> <eip:exchange-target service="myapp:cbr" /> </eip:target> <eip:inListener> <eip:exchange-target service="myapp:persist" /> </eip:inListener> </eip:wire-tap> </beans> 23
  • 24. camel-persist-su public class PersistOrderRoute extends RouteBuilder { public void configure() { from("jbi:endpoint:http://mycompany.com/persist/order") .convertBodyTo(Order.class) .to("jpa:com.mycompany.Order?persistenceUnit=order-proc") .convertBodyTo(Order.class); }} ------------------------------------------------- <beans xmlns:camel=”http://activemq.apache.org/camel"> <camel:camelContext id="camel"> <package>com.mycompany.persistence</package> </camel:camelContext> </beans> 24
  • 25. eip-cbr-su <beans xmlns:eip="http://servicemix.apache.org/eip/1.0" xmlns:myapp="http://mycompany.com/myapp"> <eip:content-based-router service="myapp:cbr" endpoint="endpoint"> <eip:rules> <eip:routing-rule> <eip:predicate> <eip:xpath-predicate xpath="/message/cheese/text() = 'gouda'" /> </eip:predicate> <eip:target> <eip:exchange-target service="myapp:queue1" /> </eip:target> </eip:routing-rule> ... 25
  • 26. eip-cbr-su ... <eip:routing-rule> <eip:predicate> <eip:xpath-predicate xpath="/message/cheese/text() = 'swiss'" /> </eip:predicate> <eip:target> <eip:exchange-target service="myapp:queue2" /> </eip:target> </eip:routing-rule> <eip:routing-rule> <eip:target> <eip:exchange-target service="myapp:queue3" /> </eip:target> </eip:routing-rule> </eip:rules> </eip:content-based-router> 26
  • 27. jms-producer-su <beans xmlns:jms="http://servicemix.apache.org/jms/1.0" xmlns:myapp="http://mycompany.com/myapp xmlns:amq="http://activemq.org/config/1.0"> <jms:endpoint service="myapp:queue1" endpoint="myProvider" role="provider" destinationStyle="queue" jmsProviderDestinationName="queue1" connectionFactory="#connectionFactory" /> <jms:endpoint service="myapp:queue2" endpoint="myProvider" role="provider" destinationStyle="queue" jmsProviderDestinationName="queue2" connectionFactory="#connectionFactory"/> 27
  • 28. jms-producer-su ... <jms:endpoint service="myapp:queue3" endpoint="myProvider" role="provider" destinationStyle="queue" jmsProviderDestinationName="queue3" connectionFactory="#connectionFactory"/> <amq:connectionFactory id="connectionFactory" brokerURL="tcp://localhost:61616" /> </beans> 28
  • 31. Distribution of ServiceMix Containers 31
  • 32. Eclipse IDE Tooling For ServiceMix  Eclipse SOA Tooling Platform (STP) Project  http://eclipse.org/stp  Spagic  http://spagic.com/  SOPERA ServiceMixTools  http://sopera.de/en/products/sopera-servicemixtools/ Eclipse SOA Tools Platform (STP) Project 32
  • 33. Eclipse Tooling Eclipse SOA Tools Platform (STP) Project 33
  • 34. What is Apache Camel? http://activemq.apache.org/camel/ 34
  • 36. Example Pattern: Content Based Router RouteBuilder builder = new RouteBuilder() { public void configure() { from("activemq:TEST.QUEUE").choice() .when(header("foo").isEqualTo("bar")). to("bean:MyBean?methodName=processMessage") .when(header("foo").isEqualTo("cheese")). to("file:/opt/dropbox") .otherwise().to("log:Test"); } }; 36
  • 37. Example Pattern: Content Based Router <camelContext id="buildSimpleRouteWithChoice" xmlns="http://activemq.apache.org/camel/schema/spring"> <route> <from uri="file:/Users/bsnyder/smxdropbox"/> <choice> <when> <predicate> <header name="foo"/> <isEqualTo value="bar"/> </predicate> <to uri="ftp://hostname:1234/"/> </when> <when> <predicate> <header name="foo"/> <isEqualTo value="cheese"/> </predicate> <to uri="mina:tcp:remotehost:9876"/> </when> <otherwise><to uri="imap:mymailhost:110"/></otherwise> </choice> </route> </camelContext> 37
  • 38. Camel Makes Routing Much Easier! from(“http://localhost:8080/requests/”). tryBlock(). to(“activemq:queue:requests”). setOutBody(constant(“<ack/>”)). handle(Throwable.class). setFaultBody(constant(“<nack/>”)); from((“activemq:queue:requests?transacted=true”). process(requestTransformer). to(“http://host:8080/Request”). filter(xpath(“//nack”)). process(nackTransformer). to(“jdbc:store”); from(“http://localhost:8080/responses/”). tryBlock(). to(“activemq:queue:responses”). setOutBody(constant(“<ack/>”)). handle(Throwable.class). setFaultBody(constant(“<nack/>”)); from(“activemq:queue:responses?transacted=true”). process(responseTransformer). to(“jdbc:store”); from(“http://localhost:8080/pull/”). to(“jdbc:load”); 38
  • 39. What’s Coming in ServiceMix 4.0 Apache ServiceMix 4.0 39
  • 40. ServiceMix 4.0 Building Blocks  Runtime: OSGi (Apache Felix)  JBI support still intact!  NMR is a OSGi service  Message Broker: Apache ActiveMQ  Web Services: Apache CXF  Routing Engine: Apache Camel 40
  • 41. Thank You for Attending! Questions? 41