my plan is to develop or use a Java-based integration framework (ESB, SOA whatever) that deals with services, with the following constraints:
- a Service can be deployed on multiple machines but doesn’t have to be present on every one of them
- a Service can be deployed and re-deployed (with a newer version) separately
- a Service is connected to other services either by:
- in-memory connections
- (async / sync) remoting to other machines
- the routing logic of the Service connections should be configurable on the fly, without re-deploying or restarting anything
I know that OpenESB is close to these requirements, however it requires redeployment of the service to change the routing (suppose the connections are HTTP BC based), but I’m unfamiliar in this regard with MuleESB, WSO2, JBossESB, whatever open source ESB… Is there any good solution for this (e.g. configurable in-memory and/or remoting routing)? I don’t really care about clustering as I plan to use the servers separately, and the designated (if required) JMS solution would be HornetQ if that matters.
After a long discussions about the pros and cons, we are going to have a HornetQ-based (JMS MQ) solution, where we create message routing rules and sometimes processing codes that handle the different kind of routing. HornetQ is able to handle the in-jvm requirement too, but that part will be covered under the hood.