C# RabbitMQ和SharedQueue已关闭

C# RabbitMQ和SharedQueue已关闭,c#,.net-4.0,rabbitmq,console-application,C#,.net 4.0,Rabbitmq,Console Application,我使用RabbitMQ发送简单的短int信息,首先我将id发送到这样一个项目: private void SendPgcIdToRabbitMQ(string id) { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) {

我使用RabbitMQ发送简单的短int信息,首先我将id发送到这样一个项目:

    private void SendPgcIdToRabbitMQ(string id) 
    {
        var factory = new ConnectionFactory() { HostName = "localhost" };
        using (var connection = factory.CreateConnection()) 
        {
            using (var channel = connection.CreateModel()) 
            {
                bool durable = true;
                channel.QueueDeclare("XQueue", durable, false, false, null);

                var body = Encoding.UTF8.GetBytes(id);

                channel.BasicPublish("", "XQueue", null, body);
                Console.WriteLine(" [x] Sent {0}", id);
            }
        }
    }
和它的听众:

    public void Listener() 
    {
        var factory = new ConnectionFactory() { HostName = "localhost" };
        using (var connection = factory.CreateConnection()) 
        {
            using (var channel = connection.CreateModel()) 
            {
                channel.QueueDeclare("XQueue", true, false, false, null);

                var consumer = new QueueingBasicConsumer(channel);
                channel.BasicConsume("XQueue", false, consumer);

                Console.WriteLine(" [*] Waiting for messages. " +
                                  "To exit press CTRL+C");
                while (true) {
                    var ea =
                        (BasicDeliverEventArgs)consumer.Queue.Dequeue();

                    var body = ea.Body;
                    var message = Encoding.UTF8.GetString(body);
                    Console.WriteLine(" [x] Received {0}", message);

                    AddPGCFileID(message);

                    channel.BasicAck(ea.DeliveryTag, false);

                    Thread.Sleep(500);
                }
            }
        }
    }
它工作正常,所以在收到消息后,我正在用它处理一些操作,然后我获得第二个ID并创建其他队列来执行同样的操作:

        private void SendSurveyIdToRabbitMQ(int yID) 
    {
        var factory = new ConnectionFactory() { HostName = "localhost" };
        using (var connection = factory.CreateConnection()) {
            using (var channel = connection.CreateModel()) {
                bool durable = true;
                channel.QueueDeclare("YQueue", durable, false, false, null);

                var body = Encoding.UTF8.GetBytes(yID.ToString());

                channel.BasicPublish("", "YQueue", null, body);
                Console.WriteLine(" [x] Sent {0}", yID);
            }
        }
    }
并收到:

        public void InquiryListener() 
    {
        var factory = new ConnectionFactory() { HostName = "localhost" };
        using (var connection = factory.CreateConnection()) {
            using (var channel = connection.CreateModel()) {
                channel.QueueDeclare("YQueue", true, false, false, null);

                var consumer = new QueueingBasicConsumer(channel);
                channel.BasicConsume("YQueue", false, consumer);

                Console.WriteLine(" [*] Waiting for messages. " +
                                  "To exit press CTRL+C");
                while (true) {
                    var ea =
                        (BasicDeliverEventArgs)consumer.Queue.Dequeue();

                    var body = ea.Body;
                    var message = Encoding.UTF8.GetString(body);
                    Console.WriteLine(" [x] Received {0}", message);

                    StartProcessing(Convert.ToInt32(message));

                    channel.BasicAck(ea.DeliveryTag, false);

                    Thread.Sleep(500);
                }
            }
        }
    }
第一个队列发送和接收工作正常,但在第二个队列中,我得到:

这很奇怪,因为它是这样工作的,从一段时间以来我一直在解决这个问题。我正在重置rabbitmq,移除所有队列等。找不到问题所在。有什么想法吗

编辑:
我正在调试,以了解第二个进程是否正确结束(第二个进程上的eariel崩溃不会导致rabbitmq出现问题),并且它通过了,我得到了补偿,因为YQueue上没有出现错误,但在我的进程工作了大约一分钟后(仅等待、非输入消息、非处理)我在XQueue上发现了同样的异常

首先检查队列是否为空,然后再执行
而(true){…}