Masstransit RabbitMq请求/响应无法创建自动删除交换

时间:2016-10-12 11:38:02

标签: rabbitmq masstransit

我们正在尝试实现一个请求/响应方案,其中消息将被删除服务器(消费者)关闭。我们首先在rabbit mq安装中没有交换/队列。

有一个服务器可以创建自己的交换/队列,我们​​希望它是auto-delete=true

如果服务器在客户端之前启动,则使用正确的配置创建交换。但是当客户端启动时,我们会收到此错误:

  

RabbitMQ.Client.Exceptions.OperationInterruptedException:AMQP操作被中断:AMQP关闭原因,由Peer发起,代码= 406,text =" PRECONDITION_FAILED - 不等效arg' auto_delete' for exchange' simple_request'在vhost' ****':收到' false'但是当前是真的'",classId = 40,methodId = 10,cause =

如果客户端是第一个,并尝试发送消息,则使用我们已定义的队列名称创建交换,但不是auto-delete=true导致错误:

  

RabbitMQ接收传输失败:AMQP操作被中断:AMQP关闭原因,由Peer发起,代码= 406,文本=" PRECONDITION_FAILED - 不等效arg' auto_delete' for exchange' simple_request'在vhost' ****':收到' true'但是当前是' false'",classId = 40,methodId = 10,cause = RabbitMQ接收传输失败:主管正在停止,不能创建其他范围

最终启动服务器时。

我们如何在请求响应方案中实现自动删除队列?

1 个答案:

答案 0 :(得分:0)

您可以更新客户端中服务队列的URI,以包含查询字符串参数,以便正确创建队列。

rabbitmq://host/vhost/queue?autodelete=true&durable=false

注意我添加了durable=false,但仅当您使用非持久性队列且我想完成时才会这样做。