I have a mechanism I've written that uses dynamic proxies to intercept hits
to JMX mbeans that checks to see if a local instance is up and initialized,
if not, it will send a JMS message to a centralized broker to see if another
server has the service available to service the request.

Basically it's a mechanism to allow unordered startup of services that
allows servicing requests while the system is starting up.  (think jini
services without the classloader magic/hassle)

All this is non-persisted with short timeouts (2 seconds usually), so
reliability isn't really an issues.

I was thinking, would a network of brokers allow me to do this without all
the hassle of having to query the jmx server for state solve the same
problem?

Idea is:
each server starts it's own local broker (that participates in a network of
brokers).  This is done as the first thing on startup
each service connects to the local JMS broker using the vm:// transport.

If a message is sent to queue:serviceA on that local broker, and there is no
listener for queue:serviceA, it would send that off to the partner brokers,
yes?

so, while Server1 is coming up, the early starting services will be getting
responses from other (already fully up) servers, and once Server1 is done
loading it's services, all the calls it makes (via the vm:// transport) will
be local and not incur the network hit?

vm:// transports serialize the objects attached to an ObjectMessage if the
receiver is local?

Basically looking something that doesn't add a ton of overhead to a JMX
call.  Since the receiver end would be listeneing to the queue and just
doing an
mbeanServer.invokeMethod(OBJNAME,"method",Object[]{args}) style hit

hoping that the requests that are serviced locally do not incur the
marshaling overhead.

Ideas?

Reply via email to