[rabbitmq-discuss] intermittent erl.exe crash

Matthias Radestock matthias at lshift.net
Thu Nov 5 21:16:30 GMT 2009


JD,

JD Conley wrote:
>> One possible extension of RabbitMQ could allow queues to have a
>> "automatically delete if idle for longer than X" setting.
> 
> My use case is an idle timeout for inactive queues, which by
> definition should remove associated bindings, right?

Yes, bindings to a queue get removed when the queue is removed.

> Activity in my case would be defined as having a consumer within X amount of time.

Actually I'd define "in use" to mean either having consumers, or 
performing any operation affecting the queue that one might expect a 
(logical) consumer to perform, such as basic.get, basic.ack, 
basic.consume, basic.cancel, queue.purge, queue.bind, queue.unbind, 
queue.declare, queue.delete. Essentially the only excluded operations 
are routing messages to queues and administrative operations, e.g. 
rabbitmqctl commands.

>> Actually, not_found (404) is defined to be *soft* error, which means it
>> only closes the channel, not the connection. So I suspect your
>> application code is tripping over the channel error and causing the
>> connection to close.
> 
> I'm using the .NET client, which is throwing an
> OperationInterruptedException. 
> 
> I am not closing the connection unless IModel.IsOpen is false after any
> operation. You say it closes the channel. So, would that be the IModel in
> .NET client speak? How would I recover from this exception without
> rebuilding everything from the connection on up?

IModel does indeed correspond to AMQP's notion of a channel. You can 
proceed after the error by opening a fresh channel with 
IConnection.CreateModel().


Regards,

Matthias.




More information about the rabbitmq-discuss mailing list