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

What's hot

cache concepts and varnish-cache
cache concepts and varnish-cachecache concepts and varnish-cache
cache concepts and varnish-cache
Marc Cortinas Val
 
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and Java
James Falkner
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014
Arun Gupta
 
ActiveMQ In Action
ActiveMQ In ActionActiveMQ In Action
ActiveMQ In Action
Bruce Snyder
 
Memcached Code Camp 2009
Memcached Code Camp 2009Memcached Code Camp 2009
Memcached Code Camp 2009
NorthScale
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
vamsi krishna
 
Using memcache to improve php performance
Using memcache to improve php performanceUsing memcache to improve php performance
Using memcache to improve php performance
Sudar Muthu
 
Realtime web application with java
Realtime web application with javaRealtime web application with java
Realtime web application with java
JeongHun Byeon
 
Tomcatx performance-tuning
Tomcatx performance-tuningTomcatx performance-tuning
Tomcatx performance-tuning
Vladimir Khokhryakov
 
Camel and JBoss
Camel and JBossCamel and JBoss
Camel and JBoss
JBug Italy
 
Load Balancing with Apache
Load Balancing with ApacheLoad Balancing with Apache
Load Balancing with Apache
Bradley Holt
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APC
Ben Ramsey
 
DjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling DisqusDjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling Disqus
zeeg
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneider
mfrancis
 
자바 성능 강의
자바 성능 강의자바 성능 강의
자바 성능 강의
Terry Cho
 
EIP In Practice
EIP In PracticeEIP In Practice
EIP In Practice
Bruce Snyder
 
Memcached Study
Memcached StudyMemcached Study
Memcached Study
nam kwangjin
 
Web sockets in Java
Web sockets in JavaWeb sockets in Java
Web sockets in Java
Pance Cavkovski
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnish
schoefmax
 
How Flipkart scales PHP
How Flipkart scales PHPHow Flipkart scales PHP
How Flipkart scales PHP
Siddhartha Reddy Kothakapu
 

What's hot (20)

cache concepts and varnish-cache
cache concepts and varnish-cachecache concepts and varnish-cache
cache concepts and varnish-cache
 
Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and Java
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014
 
ActiveMQ In Action
ActiveMQ In ActionActiveMQ In Action
ActiveMQ In Action
 
Memcached Code Camp 2009
Memcached Code Camp 2009Memcached Code Camp 2009
Memcached Code Camp 2009
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Using memcache to improve php performance
Using memcache to improve php performanceUsing memcache to improve php performance
Using memcache to improve php performance
 
Realtime web application with java
Realtime web application with javaRealtime web application with java
Realtime web application with java
 
Tomcatx performance-tuning
Tomcatx performance-tuningTomcatx performance-tuning
Tomcatx performance-tuning
 
Camel and JBoss
Camel and JBossCamel and JBoss
Camel and JBoss
 
Load Balancing with Apache
Load Balancing with ApacheLoad Balancing with Apache
Load Balancing with Apache
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APC
 
DjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling DisqusDjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling Disqus
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneider
 
자바 성능 강의
자바 성능 강의자바 성능 강의
자바 성능 강의
 
EIP In Practice
EIP In PracticeEIP In Practice
EIP In Practice
 
Memcached Study
Memcached StudyMemcached Study
Memcached Study
 
Web sockets in Java
Web sockets in JavaWeb sockets in Java
Web sockets in Java
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnish
 
How Flipkart scales PHP
How Flipkart scales PHPHow Flipkart scales PHP
How Flipkart scales PHP
 

Similar to Service-Oriented Integration With Apache ServiceMix

Aimaf
AimafAimaf
Aimaf
Saad RGUIG
 
TS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in PracticeTS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in Practice
aegloff
 
ApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache TuscanyApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache Tuscany
Jean-Sebastien Delfino
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMS
uzquiano
 
Mule web services
Mule web servicesMule web services
Mule web services
Thang Loi
 
Real world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShiftReal world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShift
Christian Posta
 
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShiftReal-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Christian Posta
 
Mule and web services
Mule and web servicesMule and web services
Mule and web services
Manav Prasad
 
Micro service architecture
Micro service architectureMicro service architecture
Micro service architecture
uEngine Solutions
 
Using Istio to Secure & Monitor Your Services
Using Istio to Secure & Monitor Your ServicesUsing Istio to Secure & Monitor Your Services
Using Istio to Secure & Monitor Your Services
Alcide
 
Taking Apache Camel For a Ride
Taking Apache Camel For a RideTaking Apache Camel For a Ride
Taking Apache Camel For a Ride
Bruce Snyder
 
Mule and web services
Mule and web servicesMule and web services
Mule and web services
venureddymasu
 
Workshop apache camel
Workshop apache camelWorkshop apache camel
Workshop apache camel
Marko Seifert
 
Toulouse Java User Group
Toulouse Java User GroupToulouse Java User Group
Toulouse Java User Group
Emmanuel Vinel
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
Shubhra Kar
 
API gateway setup
API gateway setupAPI gateway setup
API gateway setup
sivachandra mandalapu
 
Monitoring a Kubernetes-backed microservice architecture with Prometheus
Monitoring a Kubernetes-backed microservice architecture with PrometheusMonitoring a Kubernetes-backed microservice architecture with Prometheus
Monitoring a Kubernetes-backed microservice architecture with Prometheus
Fabian Reinartz
 
Integrating with SAP FIX and HL7
Integrating with SAP FIX and HL7Integrating with SAP FIX and HL7
Integrating with SAP FIX and HL7
WSO2
 
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyS314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
Luciano Resende
 
Faster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzzFaster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzz
JBug Italy
 

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

Aimaf
AimafAimaf
Aimaf
 
TS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in PracticeTS 4839 - Enterprise Integration Patterns in Practice
TS 4839 - Enterprise Integration Patterns in Practice
 
ApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache TuscanyApacheCon NA 2010 - Building Apps with Apache Tuscany
ApacheCon NA 2010 - Building Apps with Apache Tuscany
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMS
 
Mule web services
Mule web servicesMule web services
Mule web services
 
Real world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShiftReal world #microservices with Apache Camel, Fabric8, and OpenShift
Real world #microservices with Apache Camel, Fabric8, and OpenShift
 
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShiftReal-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
 
Mule and web services
Mule and web servicesMule and web services
Mule and web services
 
Micro service architecture
Micro service architectureMicro service architecture
Micro service architecture
 
Using Istio to Secure & Monitor Your Services
Using Istio to Secure & Monitor Your ServicesUsing Istio to Secure & Monitor Your Services
Using Istio to Secure & Monitor Your Services
 
Taking Apache Camel For a Ride
Taking Apache Camel For a RideTaking Apache Camel For a Ride
Taking Apache Camel For a Ride
 
Mule and web services
Mule and web servicesMule and web services
Mule and web services
 
Workshop apache camel
Workshop apache camelWorkshop apache camel
Workshop apache camel
 
Toulouse Java User Group
Toulouse Java User GroupToulouse Java User Group
Toulouse Java User Group
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 
API gateway setup
API gateway setupAPI gateway setup
API gateway setup
 
Monitoring a Kubernetes-backed microservice architecture with Prometheus
Monitoring a Kubernetes-backed microservice architecture with PrometheusMonitoring a Kubernetes-backed microservice architecture with Prometheus
Monitoring a Kubernetes-backed microservice architecture with Prometheus
 
Integrating with SAP FIX and HL7
Integrating with SAP FIX and HL7Integrating with SAP FIX and HL7
Integrating with SAP FIX and HL7
 
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyS314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
 
Faster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzzFaster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzz
 

More from Bruce Snyder

Beyond Horizontal Scalability: Concurrency and Messaging Using Spring
Beyond Horizontal Scalability: Concurrency and Messaging Using SpringBeyond Horizontal Scalability: Concurrency and Messaging Using Spring
Beyond Horizontal Scalability: Concurrency and Messaging Using Spring
Bruce Snyder
 
Enterprise Messaging With Spring JMS
Enterprise Messaging With Spring JMSEnterprise Messaging With Spring JMS
Enterprise Messaging With Spring JMS
Bruce Snyder
 
Styles of Applicaton Integration Using Spring
Styles of Applicaton Integration Using SpringStyles of Applicaton Integration Using Spring
Styles of Applicaton Integration Using Spring
Bruce Snyder
 
ActiveMQ In Action - ApacheCon 2011
ActiveMQ In Action - ApacheCon 2011ActiveMQ In Action - ApacheCon 2011
ActiveMQ In Action - ApacheCon 2011
Bruce Snyder
 
Using Enterprise Integration Patterns as Your Camel Jockey
Using Enterprise Integration Patterns as Your Camel JockeyUsing Enterprise Integration Patterns as Your Camel Jockey
Using Enterprise Integration Patterns as Your Camel Jockey
Bruce Snyder
 
Apache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMixApache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMix
Bruce Snyder
 
Messaging With Apache ActiveMQ
Messaging With Apache ActiveMQMessaging With Apache ActiveMQ
Messaging With Apache ActiveMQ
Bruce Snyder
 
Enterprise Messaging With ActiveMQ and Spring JMS
Enterprise Messaging With ActiveMQ and Spring JMSEnterprise Messaging With ActiveMQ and Spring JMS
Enterprise Messaging With ActiveMQ and Spring JMS
Bruce Snyder
 
Taking Apache Camel For A Ride
Taking Apache Camel For A RideTaking Apache Camel For A Ride
Taking Apache Camel For A Ride
Bruce Snyder
 
Messaging With ActiveMQ
Messaging With ActiveMQMessaging With ActiveMQ
Messaging With ActiveMQ
Bruce Snyder
 
Taking Apache Camel For A Ride
Taking Apache Camel For A RideTaking Apache Camel For A Ride
Taking Apache Camel For A Ride
Bruce Snyder
 

More from Bruce Snyder (11)

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

Recently uploaded

Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Zilliz
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 

Recently uploaded (20)

Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 

Service-Oriented Integration With Apache ServiceMix

  • 1. Service Oriented Integration With Apache ServiceMix Bruce Snyder bsnyder@apache.org 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