For the test I will disable the JMS adapter in the ESB console or stop the queue consumption in the WLS console. Then fill the Queues and start the Service Bus processes . Before the test I will do some test runs so I know everything is alright and the Service Bus is warmed up.
Here is a picture of the ESB process. This process reads the Queue and pass it asynchronous to the next Router. This message with a XML anytype element is transformed with XSLT to a specific message schema and the last Router transforms it to the database adapter XSD.
The OSB process works almost the same as the ESB process but in the OSB I will use XQuery instead of XLST and use Proxy Services as Routers and a Business service as Database Adapter.
Here you see a process schema of Messaging proxy service. It start with a PipelinePair to do some XSD validation on the incoming message. Then the Proxy Service determines the message type in in the RouteNode, do the first XQuery transformation to make the specific message XML and start the next specific Message Proxy Service.
The specific message Proxy Service validates the XML and in the RouteNode ( Mapped to the JCA database adapter Business Service ) the next XQuery takes place, so the Business Service get the right XML for the Toplink database mapping.
Here are my test results
OSB 10.3.1 with JRocket JVM
Total Messages | Size Message in KB | Time in Seconds With validation | Time in Seconds |
10 | 1100 | 9 | 5 |
20 | 1100 | 19 | 18 |
10 | 2000 | 12 | 10 |
20 | 2000 | 35 | 28 |
10 | 2700 | 15 | 12 |
1000 | 4 | 19 |
ESB 10.1.3.4 MLR7
Total Messages | Size Message in KB | Time in Seconds With validation | Time in Seconds |
10 | 1100 | 15 | 14 |
20 | 1100 | 33 | 28 |
10 | 2000 | 23 | 18 |
20 | 2000 | 48 | 44 |
10 | 2700 | 35 | 28 |
1000 | 4 | 22 |
Conclusion
The OSB is the overall winner with 15% a 90% better performance than the ESB. Off course this is not the best testcase and there are other areas of the Service Bus where you can do tests for, but with this case the OSB is much faster especially with big messages ( even with JRockit ) . This OSB process does even more then the ESB process, the OSB process returns a message with the result of the database adapter and put this message in a WLS Queue.
Don't know why OSB has a better performance, maybe Weblogic is faster or the ESB instance logging is the problem. In the next Soa Suite patchset 10.1.3.5, I can test the ESB processes on WebLogic server and compare this with these results.
Hi Biemond,
ReplyDeleteI am working on a proxy service based on WSDL-A.
Stage-1
I have to do a service callout (sc1) to another business service with a particular parameter.
From the response of that sc1 i need to pick two variables var1 and var2 and use it the request of stage2 and stage 3.
Stage- 2
I have to do another service callout (sc2) to the same business service with a particular parameters including var1 returned by sc1
Stage- 3
I have to do another service callout (sc3) to the same business service with a particular parameters including var2 returned by sc1
Stage-4
I need to Use the response of sc1, sc2 and sc3 and transform that to the desired response.
My only concern is I have to wait for stage 2 to complete to start with stage 3 when I have no real dependency on stage 2.
How can I ensure that My stage 2 and stage 3 can be processed in parallel. ?
Can any one please explain How I can achieve that?
Hi, I saw you already got a answer.
ReplyDeletehttp://forums.oracle.com/forums/thread.jspa?threadID=919611
Here is a example of a split -join
http://biemond.blogspot.com/2008/11/split-join-in-oracle-service-bus.html
thanks Edwin
The best of performance is from vtd-xml, which will blow all competition...
ReplyDeletehttp://vtd-xml.sf.net