How to evict dead listeners from QueueCoord?

Help
2007-04-24
2013-04-08
  • Hi there,

    We are using mantaray with spring (simplemessagelistenercontainer), and having some mixed results.

    Basically, we have two java processes.  Call 1 client, the other server.  Client is serving as QueueCoordinator, and autodiscovers server's listeners when they both start up. 

    However, if server is killed, crashes, or kill -9'd, the shutdownhook doesn't have a chance to run, and so client/QC is left with stale listener id's in its pool.

    Server is restarted, but this time has new listeners, with new listenerid's.  It registers with the client/QC, but now the client/QC has both old and new listener id's.

    A message is sent by the client with an old listener id in the header.  On the server side, IncomingClientMessageRouter tries to route it, but cannot find a listener in its listenermap b/c client is sending an invalid listener id.

    How can I get the client to update its listener map?  It should know that when server dies, and the transport is gone, that after a keepalive timeout, to evict the old listeners that depended on that particular transport, out of its list of valid listeners?

    Am I making sense?  Can anyone help?