amqpassertQueuebork一个连接的含义

Wil*_*llW 4 amqp rabbitmq node.js

在amqp的assertQueue API文档中,它指出:

断言队列存在。给定相同的参数,此操作是幂等的;但是,如果队列已经存在但具有不同的属性,它将中断通道(参数字段中提供的值可能会或可能不会用于中断目的;检查中断者的文档,我的意思是经纪人的文档)。

http://www.squaremobius.net/amqp.node/channel_api.html#channel_assertQueue

我问的是 bork(ing) 频道是什么意思。我试过谷歌但找不到任何相关的东西。

Yas*_*wal 7

博克:英文意思是“阻碍某事”。

根据问题中的文档,它说

但是,如果队列已经存在但具有不同的属性,它将中断通道

这意味着如果您尝试创建一个与已退出的通道具有相同属性的通道,则不会发生任何事情,因为它是幂等的(意味着重复相同的操作而不会产生不同的结果,例如,获取 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 的回答

  • 精彩的答案!这应该是接受的答案,因为与当前接受的答案不同,它实际上回答了OP提出的问题。顺便说一句,我欣赏技术文档中通常毫无幽默感的幽默,但在这种情况下,它实际上使我偏离了编码的轨道,因为我不得不查找一个对文档没有真正带来任何价值的术语。 (3认同)