【发布时间】:2011-03-21 04:27:23
【问题描述】:
我有一个控制台应用程序,它启动 RabbitMQ 服务器(作为使用 rabbitmq-server.bat 文件的应用程序),然后尝试在其上创建一个队列并开始侦听消息。代理启动得很好,但是一旦我尝试声明队列,我就会得到一个异常,指出队列名称不存在。我对此有点困惑,因为我正在尝试创建队列,但不知道它为什么要寻找具有该名称的现有队列。
这是我用来运行服务器的代码:
var model = QueueModelFactory.CreateModel();
model.ExchangeDeclare(exchangeName, ExchangeType.Fanout, true);
model.QueueDeclare(QueueName, false, false, false, null);
model.QueueBind(QueueName, exchangeName, "");
var subscription = new Subscription(model, QueueName, false);
while (true)
{
var args = subscription.Next();
ProcessQueueItem(args.Body);
subscription.Ack(args);
}
异常发生在调用 QueueDeclare 的行上。我得到的确切例外是:
"AMQP 操作被中断:AMQP 关闭原因,由 Peer 发起,code=404,text="NOT_FOUND - no queue 'FavorCompletions' in vhost '/'",classId=50,methodId=10,cause= ”。
我曾一度让这个工作正常进行,然后重构了一些代码,结果却让它崩溃了。我不知道我做错了什么,因为所有示例应用程序似乎都做同样的事情。
任何帮助将不胜感激。
【问题讨论】:
-
不确定为什么会失败,但作为一种解决方法,您可以使用代理的管理页面手动声明和绑定队列,然后将其从代码中删除。
-
还有这个问题吗?还是放弃/继续前进?