我有一个RabbitMQ队列,最初是这样声明的:
var result = _channel.QueueDeclare("NewQueue", true, false, false, null);
我正在尝试添加一个死信交换机,因此我已将代码更改为:
_channel.ExchangeDeclare("dl.exchange", "direct");
Dictionary<string, object> args = new Dictionary<string, object>()
{
{ "x-dead-letter-exchange", "dl.exchange" }
};
var result = _channel.QueueDeclare("NewQueue", true, false, false, args);
当我运行此代码时,出现以下错误:
错误看起来很清楚易懂,如果我删除队列,重新创建它,就不会出现这个错误,但我的问题是:是否有一种方法可以在不删除队列的情况下进行更改?异常抛出: 'RabbitMQ.Client.Exceptions.OperationInterruptedException'在 RabbitMQ.Client.dll 中
其他信息:AMQP操作被中断:由对等方启动的AMQP关闭原因,代码=406,文本="PRECONDITION_FAILED-队列'NewQueue'的'in-equivalent arg'x-dead-letter-exchange'在虚拟主机'/'中接收了类型为'longstr'的值'dl.exchange'但当前没有", classId=50, methodId=10, cause=