You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by Harvin <ha...@connamara.com> on 2009/03/20 11:34:22 UTC
Way to know if a Consumer does not exist anymore
Hello,
I'm using Active MQ and have a scenario where I have a central data store
app that has been written to update clients connected to it when it recieves
an update.
The client connects to this data store app by opening a temporary queue. The
data store app stores all the queue information and uses this info to send
updates to the clients. In other words records a subscription.
When a client need to disconnect it sends the disconnect request to this
data store app and data store app removes all its queue information (removes
subscription for this client). So, no further updates are sent to this
client.
My issue is when the client crashes and it was unable to send the disconnect
request. In which case the data store app doesnt know if the client (
consumer ) doesn't exist anymore and keeps sending updates to it. After a
while the ActiveMQ gets blocked trying to send data to a consumer which does
not exist and since it had been sending messages ever since the crash of the
consumer, the queue is full and can no longer take messages. So the entire
framework halts!
Is there a way I can determine if the consumer doesnt exist anymore.
Any help on this is greatly appreciated!
Thanks!
--
View this message in context: http://www.nabble.com/Way-to-know-if-a-Consumer-does-not-exist-anymore-tp22617811p22617811.html
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
Re: Way to know if a Consumer does not exist anymore
Posted by Rob Davies <ra...@gmail.com>.
The client crashing is something ActiveMQ should detect - how is it
connecting to the broker ? - have you disabled the
macInactivityDuration ?
On 20 Mar 2009, at 10:34, Harvin wrote:
>
> Hello,
>
> I'm using Active MQ and have a scenario where I have a central data
> store
> app that has been written to update clients connected to it when it
> recieves
> an update.
>
> The client connects to this data store app by opening a temporary
> queue. The
> data store app stores all the queue information and uses this info
> to send
> updates to the clients. In other words records a subscription.
>
> When a client need to disconnect it sends the disconnect request to
> this
> data store app and data store app removes all its queue information
> (removes
> subscription for this client). So, no further updates are sent to this
> client.
>
> My issue is when the client crashes and it was unable to send the
> disconnect
> request. In which case the data store app doesnt know if the client (
> consumer ) doesn't exist anymore and keeps sending updates to it.
> After a
> while the ActiveMQ gets blocked trying to send data to a consumer
> which does
> not exist and since it had been sending messages ever since the
> crash of the
> consumer, the queue is full and can no longer take messages. So the
> entire
> framework halts!
>
> Is there a way I can determine if the consumer doesnt exist anymore.
>
> Any help on this is greatly appreciated!
>
> Thanks!
> --
> View this message in context: http://www.nabble.com/Way-to-know-if-a-Consumer-does-not-exist-anymore-tp22617811p22617811.html
> Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
>