On 5/21/07, Adrian Tarau <[EMAIL PROTECTED]> wrote:

Hello,

I have the following problem : A connection(embedded broker, vm transport)
is created and then a few sessions. I poll for messages, with my own threads
in order to do throttling. One thing that confuses me is : if an exception
occurs somewhere in the transport(for example an interrupt on the consuming
thread) , the connection is closed with all the sessions and
consumers/producers.

AFAIK thread interupt exceptions won't close a
connection/session/transport. You sure its not some other underlying
excpetion?


I was able to listen for such an exceptions(with
Connection.setExceptionListener(...)) and recreate the connection. I tried
also with connectionFactory.setBrokerURL("failover:vm://localhost") which
supposed to fix problems like this one, and to reconnect, but is not working
as espected.

When using vm:// you should never really need failover, since the
broker is in the same JVM. Failover is intended for use with TCP where
a remote broker may fail.

Even if you were having a transport level exception (which shouldn't
really happen with vm:// but maybe there's a bug & we should catch &
handle InteruptedException better) then failover does the re-creation
of all the connection/sessions for you so there's no real point trying
to replicate that yourself (as you'll be opening all kinds of cans of
worms, like figuring out which messages, transactions &
acknowledgements were in progress & re-submitting them - all of which
failover: already handles.

BTW 4.0.2 is quite old, I'd recommend upgrading to 4.1.1
--
James
-------
http://macstrac.blogspot.com/

Reply via email to