函数ExchangeDeclareAsync和QueueDeclareAsync不会覆盖现有的交换/队列。如果具有给定名称的交换或队列已经存在,它将简单地被返回。事实上,RabbitMQ中的交换和队列是不可变的,也就是说,在创建它们之后,您不能更改它们的属性。 这也意味着,如果您使用与现有交换或队列不同的属性调用Exchange/QueueDeclareAsync,您将得到一个RabbitMQ.Client.Exceptions.OperationInterruptedException about PRECONDITION_FAILED,确切地通知您出了什么问题。
2条答案
按热度按时间omvjsjqw1#
如果您在RabbitMQ中激活了管理插件,则可以使用EasyNetQ的管理API客户端。Documentation。
例如:
然而,如果你重新声明队列或交换,你不会覆盖它,什么也不会发生。
vsikbqxv2#
函数
ExchangeDeclareAsync
和QueueDeclareAsync
不会覆盖现有的交换/队列。如果具有给定名称的交换或队列已经存在,它将简单地被返回。事实上,RabbitMQ中的交换和队列是不可变的,也就是说,在创建它们之后,您不能更改它们的属性。这也意味着,如果您使用与现有交换或队列不同的属性调用
Exchange/QueueDeclareAsync
,您将得到一个RabbitMQ.Client.Exceptions.OperationInterruptedException
aboutPRECONDITION_FAILED
,确切地通知您出了什么问题。