[rabbitmq-discuss] [ Listen event when queue destroy from client ]

Hitesh Dobariya hitesh at artoonsolutions.com
Mon Jul 7 14:12:25 BST 2014


So according to your suggestion i have to use socket.io, or redis right?
code that i sent will never work to detect client has been killed or not.

Demo that i sent you on prior mail, when i am killing the queue.js file
from node server it will automatically deleted the queue.

Well thanks for quick reply. i have to think another way to accomplish my
requirement + you link for presence exchange is not working. :(


On Mon, Jul 7, 2014 at 6:26 PM, Michael Klishin <mklishin at gopivotal.com>
wrote:

>
>
> On 7 July 2014 at 16:46:36, Hitesh Dobariya (hitesh at artoonsolutions.com)
> wrote:
> > > 1) Amqp.js : This is the server in nodejs. when user connect to
> > server. server will generate the queue, and tell client to listen
> > to that queue in passive mode. in short client don't have access
> > for create queue. if i will listen from both side then queue will
> > not destroy automatically becuase my server (amqp.js) file's
> > queue consuming it. so i want that when client (queue.js) killed
> > or close. at that time server will notify that queue is destroyed,
> > and i will get all data like routing key when it destroy.
>
> I think it's worth clarifying a few things. You do not consume in passive
> mode:
> queue.declare is what takes the passive argument. If you want the server
> to generate
> queue name and send it to the client for whatever reason, the use of
> passive declare is fine.
>
> >
> > Whereas amq.rabbitmq.event is the exchange, that will monitor
> > all the the events.
> > connection.queue("eventListener", { exclusive: true } , function(q){
> > q.bind("amq.rabbitmq.event","");
> >
> > //i want to listen all events here when queue destroy when client
> > app killed.
> > q.subscribe(function (message, headers, deliveryInfo, messageObject)
> > {
> > console.log(JSON.stringify(headers));
> > })
> > });
>
> Two things that stand out: you bind using an empty routing key and not
> "#". Perhaps that's just a typo.
>
> If a client is "destroyed" (I assume it means it has disconnected,
> hibernated,
> otherwise lost connection), only exclusive or auto-delete queues that had
> consumers
> will be deleted. But then amq.rabbitmq.event will not have a message
> published
> because it only tracks explicit queue.delete calls (I'm pretty sure this
> is the case but
> Simon can correct me).
>
> >
> > Above code will generate queue that will listen all the event
> > like exchange create, exchange delete, binding, queue created,
> > queue delete, etc..
> > I read in the documentation of the amqp-event plugin that it will
> > deliver all the event which are happing to all exchanges on the
> > rabbitmq server.
>
> Yes but this will not include queues deleted due to TTL, disconnect of
> an exclusive queue owner, etc.
>
> > 2) queue.js : it is the simple client that have only read access
> > to queue in passive mode only. if any event goes to this client
> > like queue delete then it's not helpful to me.
>
> > My main purpose is to listen event and get message when queue.js
> > will be killed or application killed in android.
>
> So your problem is effectively a presence one. This brings us back to
> square one:
>
> «If your problem is primarily client presence detection, there's presence
> exchange:
> https://github.com/tonyg/presence-exchange.»
>
>  Note that RabbitMQ is not the optimal solution for tracking client
> presence.
> Consider using a tool such as ZooKeeper or Redis.
> --
> MK
>
> Staff Software Engineer, Pivotal/RabbitMQ
>



-- 
*Thanks,*
Hitesh Dobariya,
Artoon Solutions PVT. LTD
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20140707/6572ec81/attachment.html>


More information about the rabbitmq-discuss mailing list