[rabbitmq-discuss] intermittent erl.exe crash

JD Conley jdc at hive7.com
Thu Nov 5 20:46:14 GMT 2009


> One possible extension of RabbitMQ could allow queues to have a
> "automatically delete if idle for longer than X" setting. That would
> actually be quite easy to implement and is a natural extension of the
> existing exclusivity and auto-delete flags. Would that work for you or
> do you actually need an idle timeout for *bindings*? Those would be a
> lot harder to implement.

That's interesting, and would save my app code a lot of headache. My use
case is an idle timeout for inactive queues, which by definition should
remove associated bindings, right? Activity in my case would be defined as
having a consumer within X amount of time.

> 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. Stack looks something like:

RabbitMQ.Client.Exceptions.OperationInterruptedException: The AMQP operation
was interrupted: AMQP close-reason, initiated by Peer, code=404,
text="NOT_FOUND - no queue
'youtopia.playerqueue.bc19a9767bc94cc18a20c7d8c4c9c1c6' in vhost '/'",
classId=50, methodId=50, cause=
   at RabbitMQ.Client.Impl.SimpleBlockingRpcContinuation.GetReply()
   at RabbitMQ.Client.Impl.ModelBase.ModelRpc(MethodBase method,
ContentHeaderBase header, Byte[] body)
   at RabbitMQ.Client.Framing.Impl.v0_8.Model.QueueUnbind(String queue,
String exchange, String routingKey, IDictionary arguments)
[My code here]

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?

-JD





More information about the rabbitmq-discuss mailing list