gpt4 book ai didi

c# - 使用 C# 库创建 RabbitMQ 服务器时出现异常

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:32 25 4
gpt4 key购买 nike

我有一个启动 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 - vhost '/' 中没有队列 'FavorCompletions',classId=50,methodId=10,cause= ".

我曾经让这个工作正常,然后重构了一些代码,结果却让它崩溃了。我不知道我做错了什么,因为所有示例应用程序似乎都在做完全相同的事情。

如有任何帮助,我们将不胜感激。

最佳答案

不知道 CreateModel()QueueModelFactory 代码中有什么,并查看使用 ExchangeDeclare、QueueDeclare 和 QueueBind 的其余代码,它们看起来不错。

我只能建议您创建连接/模型的方式存在问题。

替换你的

var model = QueueModelFactory.CreateModel();

与:

IModel model = new ConnectionFactory { Address = "127.0.0.1" }
.CreateConnection()
.CreateModel();

似乎开始了,并没有引起那个异常。

我以前遇到过你的异常,但没有缩小它的确切原因,在我的一个案例中,我在声明交换 model.ExchangeDeclare() 部分时犯了一个错误,所以这是也是一个值得关注的领域。

关于c# - 使用 C# 库创建 RabbitMQ 服务器时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5373793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com