[rabbitmq-discuss] Lockup in QueueDeclare()

Galmok galmok at gmail.com
Mon Jul 9 15:25:29 BST 2012


I have an issue with QueueDeclare locking up on me. It works fine for the 
most part, but eventually, it locks up (no error, just doesn't return). I 
have tried to find out where it happens and this is the spot:

When running:

channel.QueueDeclare()

RabbitMQ enters an idle state at the line marked below:

namespace RabbitMQ.Client.Impl
{
    public class SimpleBlockingRpcContinuation : IRpcContinuation
    {
        public virtual Command GetReply()
        {
====>>>     Either result = (Either)m_cell.Value;
            switch (result.Alternative)
...

Now, I call QueueDeclare() from a callback created like this (I receive a 
message from AMQP and create/bind to a new queue):

        public string subscribe(string routingKey, BasicDeliverEventHandler 
e )
        {
            lock (channel)
            {
                string queueName = channel.QueueDeclare();
                EventingBasicConsumer consumer = new 
EventingBasicConsumer();
                consumer.Received += e;
                string consumerTag = channel.BasicConsume(queueName, true, 
consumer); // true; noAck
                channel.QueueBind(queueName, ExchangeName, routingKey);
                return queueName;
            }
        }

Is it not allowed to create/bind to a new queue when being called from this 
callback? Can I avoid the lockup somehow?

I use 'lock' to avoid triggering the non-multithread safe .NET 
implementation. Could this be an issue here?

Any hints would be nice here.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20120709/5f9594c6/attachment.htm>


More information about the rabbitmq-discuss mailing list