[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