【发布时间】:2017-03-01 23:59:42
【问题描述】:
我有一个 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 close-reason,由Peer发起,code=406,text="PRECONDITION_FAILED - 队列“NewQueue”的不等价参数“x-dead-letter-exchange” vhost '/':收到了类型为 'longstr' 的值 'dl.exchange' 但是 当前为无”,classId=50,methodId=10,cause=
错误似乎很容易解释,如果我删除队列,当我重新创建它时,我没有收到错误,但我的问题是:有没有办法在不删除队列的情况下进行此更改?
【问题讨论】:
标签: c# rabbitmq message-queue