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队列中的参数
猜你喜欢
- 输入按键事件处理程序 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01