Wil*_*llW 4 amqp rabbitmq node.js
在amqp的assertQueue API文档中,它指出:
断言队列存在。给定相同的参数,此操作是幂等的;但是,如果队列已经存在但具有不同的属性,它将中断通道(参数字段中提供的值可能会或可能不会用于中断目的;检查中断者的文档,我的意思是经纪人的文档)。
http://www.squaremobius.net/amqp.node/channel_api.html#channel_assertQueue
我问的是 bork(ing) 频道是什么意思。我试过谷歌但找不到任何相关的东西。
博克:英文意思是“阻碍某事”。
根据问题中的文档,它说
但是,如果队列已经存在但具有不同的属性,它将中断通道
这意味着如果您尝试创建一个与已退出的通道具有相同属性的通道,则不会发生任何事情,因为它是幂等的(意味着重复相同的操作而不会产生不同的结果,例如,获取 id 数据的 REST API GET 请求比如说 123,除非更新,否则每次都会返回相同的数据,这是一个非常有趣的视频,解释了无能的概念),但是如果您尝试创建具有相同名称但不同属性的通道,则通道创建将被“borked”,即受阻。
在下面的代码中,我们再次创建通道,
var ok0 = ch.assertQueue(q, {durable: false});// creating the first time
var ok1 = ch.assertQueue(q, {durable: true});// creating the second time again with different durable property value
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误
“PRECONDITION_FAILED - 虚拟主机 '/' 中的队列 'hello' 的不等价参数 'durable':收到 'true' 但当前为 'false'”
这意味着您正在尝试创建具有不同属性的相同通道,即耐用属性与现有通道不同,因此它已被破坏。
[2]:@Like Bakken 的回答