You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by B-Storm <bo...@yahoo.com> on 2006/08/16 04:30:13 UTC

ActiveMQ behavior when subscriber crashes?

I am a newby at using ActiveMQ and therefore I have simple
questions. Maybe I missed a similar post in the forum?

In the situation where I have a publish - subscibe model... suppose
I have multiple subscribers consumming the messages. The 
subscriptions are not durable and the messages are not persistent.
Then one of my subscribers crashes without properly closing the 
session/connection etc. When a subscriber crashes unexpectedly I don't want
ActiveMQ to try to send anymore message to them. I assume it will
generate an exception of some sort within the broker.

1. What is the behavior of ActiveMQ going to be in this situation?

2. For all of the message received from the publisher(s) how often
    will it attempt to send new messages to the crashed subscriber
    before giving up on it? 

3. Will this affect the future performance of ActiveMQ's message
    delivery to the other subscribers?

4. Is there a way to configure ActiveMQ to stop sending messages
    to crashed clients and close the connection after a certain number
    of failed attempts (non-durable, non-persistent)?

5. Is there a way to be notified of subscribers that are not accepting
    messages?

Thanks in advance.

-- 
View this message in context: http://www.nabble.com/ActiveMQ-behavior-when-subscriber-crashes--tf2112351.html#a5824427
Sent from the ActiveMQ - User forum at Nabble.com.


Re: ActiveMQ behavior when subscriber crashes?

Posted by James Strachan <ja...@gmail.com>.
On 8/16/06, B-Storm <bo...@yahoo.com> wrote:
>
> I am a newby at using ActiveMQ and therefore I have simple
> questions.

Welcome! :)

>  Maybe I missed a similar post in the forum?
>
> In the situation where I have a publish - subscibe model... suppose
> I have multiple subscribers consumming the messages. The
> subscriptions are not durable and the messages are not persistent.
> Then one of my subscribers crashes without properly closing the
> session/connection etc. When a subscriber crashes unexpectedly I don't want
> ActiveMQ to try to send anymore message to them. I assume it will
> generate an exception of some sort within the broker.

Yes.


> 1. What is the behavior of ActiveMQ going to be in this situation?

The broker will kill the connection and not dispatch (or keep around)
any more messages for that consumer


> 2. For all of the message received from the publisher(s) how often
>     will it attempt to send new messages to the crashed subscriber
>     before giving up on it?

Once it decides the connection is dead it stops doing anything for
that client any more.  Typically it stops a connection when the socket
dies. There's also an inactivity timeout applied above the TCP layer
in case your OS doesn't inform Java of sockets terminating fast
enough. You can tweak the socket timeouts etc via the TCP transport...
http://activemq.org/site/tcp-transport-reference.html

or specify an inactivity timeout via the wireformat...
http://activemq.org/site/configuring-wire-formats.html

BTW the parent page of those links is a handy place to start on as its
got lots of information on how you can configure ActiveMQ using a
simple URI syntax...
http://activemq.org/site/configuring-transports.html


> 3. Will this affect the future performance of ActiveMQ's message
>     delivery to the other subscribers?

No. As soon as the connection is closed by the broker its resources
are all discarded. The only real way a subscriber can adversely affect
the broker is by working perfectly but by going very slow compared to
the other subscribers...

http://activemq.org/site/slow-consumer-handling.html



> 4. Is there a way to configure ActiveMQ to stop sending messages
>     to crashed clients and close the connection after a certain number
>     of failed attempts (non-durable, non-persistent)?

As soon as connection is closed, the broker disconnects the client.
The client can auto-reconnect if it uses the failover transport...

http://activemq.org/site/failover-transport-reference.html

> 5. Is there a way to be notified of subscribers that are not accepting
>     messages?

You can use JMX to watch the system
http://activemq.org/site/jmx.html

or you can use advisories
http://activemq.org/site/advisory-message.html
-- 

James
-------
http://radio.weblogs.com/0112098/