在amqp的assertQueue API文档中,它指出:
- 声明队列存在。此运算在给定相同参数的情况下是幂等的;但是,如果队列已经存在但具有不同的属性(arguments字段中提供的值可能会也可能不会计入borking目的;检查borker的,我的意思是经纪人的,文件)。*
http://www.squaremobius.net/amqp.node/channel_api.html#channel_assertQueue
我问的是什么意思,通过博尔克(ing)的渠道。我试过google,但找不到任何相关的东西。
2条答案
按热度按时间snvhrwxg1#
博尔克:英语的意思是阻碍某事。
根据问题中的文档,它说
但是,如果队列已经存在但具有不同的属性,则它将博尔克通道
这意味着,如果你尝试创建一个与已经存在的通 prop 有相同属性的通道,则不会发生任何事情,因为它是idempotent(意味着重复相同的操作,没有不同的结果,例如,一个REST API GET请求获取id为123的数据,除非更新,否则每次都会返回相同的数据,一个解释无效概念的非常有趣的视频),但是如果你试图创建一个同名但属性不同的通道,通道创建将被“borked”,即。受阻。
在下面的代码中,我们再次创建通道,
抛出错误
“PRECONDITION_FAQUE-vhost”/“中队列”hello“的不等价参数”durable“:接收到“true”,但当前为“false”“
这意味着您正在尝试使用不同的属性创建相同的通道,即。耐久属性与现有通道不同,因此它已被删除。
[2]:@Like Bakken的回答
deyfvvtc2#
您是否尝试调用
assertQueue
两次,第二次使用不同的属性?你会很快回答你自己的问题。我使用this code来创建这个测试程序:
然后,启动RabbitMQ并运行测试代码。您应该看到如下输出: