I am working on an Application which would send a request to Multiple Service Providers in a Asynchronous Manner, collate the responses and diplay the results to the user.

I intend to create a component for handling each Service Provider. The Component would be loosely coupled and so it should be very easy to add or remove Service Providers.

enter image description here

The Component would

  1. Process the request received from Web Layer and process it to translate it in the format required by the Servie Provider.
  2. Send the Request to the Service Provider
  3. Process the response received from the service provider to translate it to a format required by our application.

Can we use Apache Service Mix here? Is it fast enough to handle a Request-Response cycle in less than 5 seconds (assuming that the Service Providers send responses in less than a second).

OR

Can we use any other ESB and are ESB's fast enough to meet our requirements?

Thanks in advance.

Shardul.

有帮助吗?

解决方案

Servicemix should be able to handle this. The main question is if you even need servicemix.

If you want your components to run on OSGi then you can use servicemix or karaf + camel (which is something like servicemix light).

To communicate between web frontend and the component I would use jms and to implement the component I suggest using camel + pojos.

If you need more help with this feel free to contact me again. It seems you found me on IRC already :-) username: cschneide or cschneider

其他提示

Regarding speed: in integration projects, the messaging/processing infrastructure itself is rarely the bottleneck but instead the touch points with external services.

So the only answer re:"is ServiceMix fast enough" for your scenario is "yes" because most of the time will be spent interacting with your service providers (ie waiting on the network's response), not in SM's own message processing code.

On FuseESB version 4.2, I've reached 15,000 calls per second on a DualCore laptop with 2GB RAM. The calls were made to a CXF service exposed by ServiceMix. Internally, one Spring bean injected by OSGi was called, which simply returned random data. And ServiceMix can be clustered. So I think it is fast enough as a Java container.

Regarding the "fast enough?" fact you may look at the http://esbperformance.org for a performance comparison of 8 open source ESBs. While most of the ESB's nowadays performs really well, the UltraESB is found to be the best performing ESB.

Looking at your requirement it is a typical use case for any ESB. You need to use the filtering and transformation capabilities to implement this.

The filter will decide which flow to be invoked based on message content or properties like the incoming URL etc. and forward to the desired flow. Each flow needs to be instrumented with the required transformation logic to invoke the service provider. In the same way the back response will be dispatched to the correct flow to do the reverse transformation.

Disclaimer: I work for AdroitLogic the company backing the UltraESB.

For latest ESB peformance information, you might want to look at ESB Performance – Making of the Fastest ESB

WSO2 ESB is another cool alternative. WSO2 ESB is based on the OSGI based WSO2 Carbon platform and its 100% free and open source and offers a number of samples that you can try out of the box. Also, WSO2 is not just an ESB but a comprehensive SOA platform where we have ESB,Identity Server, Data Services Server, Business Process Server etc. runs on top of OSGi based Carbon platform. Give it a try.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top