Hi,
I'd like to get some feedback on how to deploy ServiceMix 3 in the
following scenario.
What I've got:
An "accidental architecture" of about 5 spring-based webapps, most of
which expose some kind of service to each other (using spring
httpinvoker) or external systems (using axis). Their services are
already encapsuled in a service layer and some of them are accessible
rpc-style through httpinvoker/axis in addition to the web ui. There's
about 3 external systems (more coming), which are beyond my control
and ususally not java-based.
What I want and why:
Reliable messaging: All communication is currently non-reliable, e.g.
messages could get lost if a service is called while the app is down
for maintenance.
Message-based communication: The rpc-style communication leads to
tight coupling between apps, e.g. when a service interface needs to
change.
Better monitoring: By sending all communication through a single
channel (the bus), monitoring should become a lot easier.
All the other goodies, eventually.
Options I can think of:
Run SM decentralized: Embed SM in each webapp, extract the services
from the webapp and plug them into the embedded SM. Not sure what
that would buy me though.
Run a single central instance of SM (add another instance for
failover later), extract the services from their webapps and plug
them into SM. Since I'm already familiar with spring, I guess I could
write a spring (web?) app that embeds both SM and all the services
(I'd prefer a lightweight approach over literally following the JBI
spec). If the webapps would talk to the bus via JMS, it looks like
I've met all my goals.
For the communication between webapp and bus, is it possible to reuse
the ActiveMQ running embedded in SM?
What about running SM standalone (instead of embedded in a spring
app), deploying the services as one or separate spring apps outside
the bus and having them communicate via the same JMS broker that the
webapps use already? Probably less efficient, but maybe a little
simpler conceptually (since all participants talk to the bus in the
same fashion)?
Finally, what are the benefits of running SM inside Geronimo?
If all of this sounds like I'm thinking out loud, it's because I am.
I still need to get my head wrapped around many of these concepts,
and I hope this is the right place for questions like these. Anyway,
I'd appreciate all feedback.
Thanks,
Dan