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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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?