SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

cache concepts and varnish-cache
cache concepts and varnish-cachecache concepts and varnish-cache
cache concepts and varnish-cacheMarc 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 JavaJames 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 2014Arun Gupta
 
ActiveMQ In Action
ActiveMQ In ActionActiveMQ In Action
ActiveMQ In ActionBruce Snyder
 
Memcached Code Camp 2009
Memcached Code Camp 2009Memcached Code Camp 2009
Memcached Code Camp 2009NorthScale
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postvamsi krishna
 
Using memcache to improve php performance
Using memcache to improve php performanceUsing memcache to improve php performance
Using memcache to improve php performanceSudar Muthu
 
Realtime web application with java
Realtime web application with javaRealtime web application with java
Realtime web application with javaJeongHun Byeon
 
Camel and JBoss
Camel and JBossCamel and JBoss
Camel and JBossJBug Italy
 
Load Balancing with Apache
Load Balancing with ApacheLoad Balancing with Apache
Load Balancing with ApacheBradley Holt
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APCBen Ramsey
 
DjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling DisqusDjangoCon 2010 Scaling Disqus
DjangoCon 2010 Scaling Disquszeeg
 
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 Schneidermfrancis
 
자바 성능 강의
자바 성능 강의자바 성능 강의
자바 성능 강의Terry Cho
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnishschoefmax
 

Was ist angesagt? (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
 

Ähnlich wie Service-Oriented Integration With Apache ServiceMix

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 Practiceaegloff
 
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 TuscanyJean-Sebastien Delfino
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSuzquiano
 
Mule web services
Mule web servicesMule web services
Mule web servicesThang 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 OpenShiftChristian 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 OpenShiftChristian Posta
 
Mule and web services
Mule and web servicesMule and web services
Mule and web servicesManav Prasad
 
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 ServicesAlcide
 
Taking Apache Camel For a Ride
Taking Apache Camel For a RideTaking Apache Camel For a Ride
Taking Apache Camel For a RideBruce Snyder
 
Mule and web services
Mule and web servicesMule and web services
Mule and web servicesvenureddymasu
 
Workshop apache camel
Workshop apache camelWorkshop apache camel
Workshop apache camelMarko Seifert
 
Toulouse Java User Group
Toulouse Java User GroupToulouse Java User Group
Toulouse Java User GroupEmmanuel Vinel
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop OverviewShubhra Kar
 
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 PrometheusFabian Reinartz
 
Integrating with SAP FIX and HL7
Integrating with SAP FIX and HL7Integrating with SAP FIX and HL7
Integrating with SAP FIX and HL7WSO2
 
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 TuscanyLuciano Resende
 
Faster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzzFaster & Greater Messaging System HornetQ zzz
Faster & Greater Messaging System HornetQ zzzJBug Italy
 

Ähnlich wie 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
 

Mehr von 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 SpringBruce Snyder
 
Enterprise Messaging With Spring JMS
Enterprise Messaging With Spring JMSEnterprise Messaging With Spring JMS
Enterprise Messaging With Spring JMSBruce Snyder
 
Styles of Applicaton Integration Using Spring
Styles of Applicaton Integration Using SpringStyles of Applicaton Integration Using Spring
Styles of Applicaton Integration Using SpringBruce Snyder
 
ActiveMQ In Action - ApacheCon 2011
ActiveMQ In Action - ApacheCon 2011ActiveMQ In Action - ApacheCon 2011
ActiveMQ In Action - ApacheCon 2011Bruce 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 JockeyBruce Snyder
 
Apache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMixApache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMixBruce Snyder
 
Messaging With Apache ActiveMQ
Messaging With Apache ActiveMQMessaging With Apache ActiveMQ
Messaging With Apache ActiveMQBruce 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 JMSBruce Snyder
 
Taking Apache Camel For A Ride
Taking Apache Camel For A RideTaking Apache Camel For A Ride
Taking Apache Camel For A RideBruce Snyder
 
Messaging With ActiveMQ
Messaging With ActiveMQMessaging With ActiveMQ
Messaging With ActiveMQBruce Snyder
 
Taking Apache Camel For A Ride
Taking Apache Camel For A RideTaking Apache Camel For A Ride
Taking Apache Camel For A RideBruce Snyder
 

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

Kürzlich hochgeladen

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Kürzlich hochgeladen (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

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