Is Apache ServiceMix a possible solution? Is it fast enough? [closed]
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this questionI 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.
The Component would
- Process the request received from Web Layer and process it to translate it in the format required by the Servie Provider.
- Send the Req开发者_StackOverflowuest to the Service Provider
- 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.
精彩评论