Change the arguments in a RabbitMQ queue(更改RabbitMQ队列中的参数)
本文介绍了更改RabbitMQ队列中的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个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发起,代码=406,Text="前置条件_失败- 中队列‘NewQueue’的不等价参数‘x-死信-交换’ Vhost‘/’:收到了类型为‘Longstr’的值‘dl.Exchange’,但是 Current is None",类ID=50,方法ID=10,原因=
错误似乎不言而喻,如果我删除队列,当我重新创建它时,我不会收到错误,但我的问题是:是否有方法在不删除队列的情况下进行此更改?
推荐答案
否,默认情况下您必须删除队列并重新创建。
但您可以使用以下策略:
rabbitmqctl set_policy DLX "NewQueue" '{"dead-letter-exchange":"my-dlx"}' --apply-to queues
通过这种方式,您可以添加或删除队列args,而无需删除它。
Read here了解更多详细信息。
使用策略进行配置
要使用策略指定DLX,请将密钥"死信交换"添加到 策略定义。 同样,可以通过添加密钥来指定显式路由密钥 策略的"死信路由关键字"。 也可以使用管理插件定义策略,请参阅 有关更多详细信息,请参阅策略文档。
这篇关于更改RabbitMQ队列中的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:更改RabbitMQ队列中的参数
基础教程推荐
猜你喜欢
- 如何使用 .Net 检查 Active Directory 服务器是否已启动并正在运行? 2022-01-01
- .NET SerialPort DataReceived 事件未触发 2022-01-01
- 禁止输入少量字符,例如'<'、'&a 2022-01-01
- WPF 模态进度窗口 2022-01-01
- 如果有人提交恶意软件Nuget包怎么办? 2022-01-01
- C# 从 List<List<int>> 中删除重 2022-01-01
- 我应该在后面的代码中直接使用 Linq To SQL 还是使 2022-01-01
- 当值可以是对象或空数组时反序列化 JSON 2022-01-01
- Azure Functions:CosmosDBTrigger 未在 Visual Studio 中触发 2022-01-01
- Moq It.Is<>不匹配 2022-01-01
