Timothy Bish wrote:
> 
> I'd need some more information on your setup to give you a definite
> answer.  Are you using the Failover transport?  If so then the exception
> listener is not notified if the connection is dropped, the Failover
> transport just sits in the background attempting to reconnect.
> 
> In NMS.ActiveMQ 1.2.0-RC2 there is an Inactivity Monitor in the
> transport stack that can be enabled, its new and still undergoing some
> testing so I have disabled it by default, you can enable it by adding
> transport.useInactivityMonitor to your connection URI's options, like
> this:
> 
>       "tcp://127.0.0.1:61616?transport.useInactivityMonitor=true"
> 
> For the non-Failover transport case when the TCP connection is broken
> and finally detected it should cause an exception to fire from the
> Exception listener.  Note however that without the inactivity monitor
> enabled it could take some time for that to happen, I think the keep
> alive on TCP connections in windows is something like an hour or so.
> 
> Regards
> Tim.
> 

All of my initial testing was performed without the failover transport
(which I actually didn't know about until just now).  With that said, I
observe the following behaviors with 1.2-RC2:

No failover transport, no inactivity monitor: Exception listener and
connection interruped listener never fires (even days later)

No failover transport, inactivity monitor enabled: A connection interruped
event fires on the publisher but no event fires on the subscriber.  However
all connections are restored.  This seems to behave very similarly (if not
identically) to the failover transport scenario below.

Failover transport, no inactivity monitor: A connection interruped event
fires on the publisher only and all connections are restored per the backoff
in the failover transport spec

In summary, things work as expected with the failover transport and that is
probably how 99% of developers handle this scenario.  That is a good
solution to my particular problem and I am very happy to discover it. 
However if failover transport is not used (either deliberately or out of
ignorance), the inactivity monitor seems necessary to obtain reasonable
reconnect behavior.  However it seems that in at least the asychronous case
the event behavior makes it difficult (impossible?) for the application to
actually figure out if there is a connection problem, particularly on the
subscriber side.  In addition, the events behave very differently between
NMS versions.

I'm not sure if it is worth the effort to pursue this further, but if so, it
would be good to start with the events and what they should be doing.  For
instance, I'm still unclear whether a TCP connection getting closed/reset
should fire a "connection interruped" event or a "connection exception"
event.  I can create a bug report for this if desired.
-- 
View this message in context: 
http://old.nabble.com/ExceptionListener-behavior-in-Connection-class-and-NMS-1.2.0-tp27026733p27065051.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to