Presentation is loading. Please wait.

Presentation is loading. Please wait.

Apache ServiceMix 4.0 The Next Generation ESB Guillaume Nodet.

Similar presentations


Presentation on theme: "Apache ServiceMix 4.0 The Next Generation ESB Guillaume Nodet."— Presentation transcript:

1 Apache ServiceMix 4.0 The Next Generation ESB Guillaume Nodet

2 About the author Open Source PMC Chair of the Apache ServiceMix project Involved in Apache Geronimo, Apache ActiveMQ, Apache ODE, Apache CXF, Jencks Previously involved in XFire, Mule IONA Principal Engineer Since LogicBlaze acquisition in April 2007 Guillaume Nodet

3 Schedule JBI 1.0 Overview Architecture WSDL Messaging Model Normalized Message Router Lessons learned Apache ServiceMix 4.0 Goal Standard based Simplified API Building blocks OSGi as a platform Spring for configuration Intuitive EIP router High performance message broker Easy to use Services Framework Around the container Eclipse tooling Long term JBI 2.0, SCA Demo

4 JBI 1.0: what is JBI? Integration Systems Plug-in Components Normalized exchanges WSDL Decoupling

5 JBI 1.0: architecture

6 JBI 1.0: WSDL messaging model Abstract model Concrete model Service providers Service consumers

7 JBI 1.0: WSDL messaging model Message type Normal Faults Operation Qualified name Message Exchange Pattern Message types Interface Qualified name Operations Extended interfaces Abstract model

8 JBI 1.0: WSDL messaging model Binding type Endpoint Endpoint name Binding type Service Qualified name Interface name Endpoints Concrete model

9 Consumers and providers Normalized Message Delivery Channel Run-time Endpoint Activation Service invocation and MEPs Message Exchange Endpoints JBI 1.0: Normalized Message Router

10 Consumers and providers Normalized Message Delivery Channel Run-time Endpoint Activation Service invocation and MEPs Message Exchange Endpoints Consumers and providers WSDL description Abstract model Decoupled JBI 1.0: Normalized Message Router

11 Consumers and providers Normalized Message Delivery Channel Run-time Endpoint Activation Service invocation and MEPs Message Exchange Endpoints Normalized Message XML payload Properties Attachments JBI 1.0: Normalized Message Router

12 Consumers and providers Normalized Message Delivery Channel Run-time Endpoint Activation Service invocation and MEPs Message Exchange Endpoints Delivery Channel Communication between a component and the NMR JBI 1.0: Normalized Message Router

13 Consumers and providers Normalized Message Delivery Channel Run-time Endpoint Activation Service invocation and MEPs Message Exchange Endpoints Endpoint activation Declaring Service endpoint Providing metadata JBI 1.0: Normalized Message Router

14 Consumers and providers Normalized Message Delivery Channel Run-time Endpoint Activation Service invocation and MEPs Message Exchange Endpoints Service invocation and MEP In-Only Robust-In-Only In-Out In-Optional-Out JBI 1.0: Normalized Message Router

15 Consumers and providers Normalized Message Delivery Channel Run-time Endpoint Activation Service invocation and MEPs Message Exchange Endpoints External Internal Addressing Implicit Explicit Dynamic JBI 1.0: Normalized Message Router

16 JBI 1.0: Lessons learned Pros Normalized exchanges Normalized Message Router Cons Classloader architecture JBI packaging Writing components is complex Role of the component ?

17 ServiceMix 4.0: Goal Enterprise OSGi Container Lightweight ESB and SOA container Ease of use

18 ServiceMix 4.0: Standard based Short Term JBI 1.0 JAX-WS, WS-* On the long term JBI 2.0 support SCA IONA Support Involved in JBI 2.0 EG, OSGi Alliance (leading OSGi Enterprise Edition EG), SCA

19 ServiceMix 4.0: Simplified API No more components Deployment / Classloader is delegated to OSGi Bundles as the packaging and extension mechanism Leverages OSGi architecture Leverage spring-osgi (optionally) Endpoints as first-class citizens Endpoint are activated when registered in the OSGi registry Channel is now on the Endpoint Endpoints use push delivery rather than pulling the channel

20 Building blocks Avoid reinventing the wheel Framework: OSGi (Apache Felix) SOAP support: Apache CXF JMS broker: Apache ActiveMQ Routing Engine: Apache Camel

21 Apache Camel Java DSL for EIP from(“http://localhost:8080/requests/”). tryBlock(). to(“activemq:queue:requests”). setOutBody(constant(“ ”)). handle(Throwable.class). setFaultBody(constant(“ ”)); 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(“ ”)). handle(Throwable.class). setFaultBody(constant(“ ”)); from(“activemq:queue:responses?transacted=true”). process(responseTransformer). to(“jdbc:store”); from(“http://localhost:8080/pull/”). to(“jdbc:load”);

22 Apache Camel Java DSL for EIP from(“http://localhost:8080/requests/”). tryBlock(). to(“activemq:queue:requests”). setOutBody(constant(“ ”)). handle(Throwable.class). setFaultBody(constant(“ ”)); 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(“ ”)). handle(Throwable.class). setFaultBody(constant(“ ”)); from(“activemq:queue:responses?transacted=true”). process(responseTransformer). to(“jdbc:store”); from(“http://localhost:8080/pull/”). to(“jdbc:load”); from(“http://localhost:8080/requests/”). tryBlock(). to(“activemq:queue:requests”). setOutBody(constant(“ ”)). handle(Throwable.class). setFaultBody(constant(“ ”));

23 Apache Camel Java DSL for EIP from(request). tryBlock(). to(requestStorage). setOutBody(constant(ack)). handle(Throwable.class). setFaultBody(constant(nack)); from(requestStorage). process(requestTransformer). to(requestProvider). filter(isNack). process(nackTransformer). to(dbStorer); from(responseConsumer). tryBlock(). to(responseStorage). setOutBody(constant(ack)). handle(Throwable.class). setFaultBody(constant(nack)); from(responseStorage). process(responseTransformer). to(dbStorer); from(response). to(dbLoader); from(request). tryBlock(). to(requestStorage). setOutBody(constant(ack)). handle(Throwable.class). setFaultBody(constant(nack));

24 Apache Camel Java DSL for EIP from(“http://localhost:8080/requests/”). tryBlock(). to(“activemq:queue:requests”). setOutBody(constant(“ ”)). handle(Throwable.class). setFaultBody(constant(“ ”)); 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(“ ”)). handle(Throwable.class). setFaultBody(constant(“ ”)); from(“activemq:queue:responses?transacted=true”). process(responseTransformer). to(“jdbc:store”); from(“http://localhost:8080/pull/”). to(“jdbc:load”); java.lang.Throwable

25 Tooling Cimero

26 Tooling Cimero Contributed to Eclipse STP by Bull Currently under IP process at Eclipse Extend to provide support for Camel Roundtrip with Camel

27 Roadmap ServiceMix being release (first official release after graduation) ServiceMix 3.2 following (beginning of October) ServiceMix 4.0-m1 in october Milestones every month or so until 4.0 final (Q1 2008) Contributors are welcome!

28 Questions ? Guillaume Nodet Blog:

29


Download ppt "Apache ServiceMix 4.0 The Next Generation ESB Guillaume Nodet."

Similar presentations


Ads by Google