【问题标题】:RabbitMQ: What does the 'direct' heading under `rabbitmqctl list_exchanges` mean?RabbitMQ:“rabbitmqctl list_exchanges”下的“直接”标题是什么意思?
【发布时间】:2011-08-02 05:20:33
【问题描述】:

如果我使用 php 的 amqp 类在 rabbitmq 中创建一个交换,交换类型设置为 direct,并且指定的唯一选项是 durable,然后尝试在 node.js 中连接到该交换,我得到一个 Cannot redeclare exchange with different options error你看看你的选项是否不匹配。

但是,据我所知,我使用的是完全相同的选项(直接类型和持久选项)。所以我做了一个测试,并在 php 中创建了一个名为 php_exchange 的交换,在 node.js 中创建了一个名为 node_exchange 并运行 rabbitmqctl list_exchanges 并得到了一些有趣的输出:

Listing exchanges ...
node_exchange   direct
amq.headers headers
amq.direct  direct
amq.match   headers
amq.fanout  fanout
    direct
php_exchange    direct
amq.topic   topic
...done.

direct 标题在这种情况下是什么意思(很明显,它并不是所有类型的直接交换,因为它列出了 node_exchange 为直接类型)?如何让 node.js 创建一个相同的 amqp 交换(以便在连接到持久交换时不会失败)?

我正在使用 PECL php amqp 库和 node-amqp 库 (https://github.com/ry/node-amqp)

谢谢。

编辑:

这是rabbitmqctl list_exchanges name type auto_delete internal arguments 的输出(为简洁起见,删除了其他交换):

Listing exchanges ...
node_exchange   direct  false   false   []
php_exchange    direct  false   false   []
...done.

【问题讨论】:

    标签: php javascript node.js rabbitmq amqp


    【解决方案1】:

    这不是标题 - 这是 AMQP 的一个稍微令人困惑的方面的结果,即有一个名为“”的直接交换。这是“默认”交换,所有队列都会自动绑定到该交换。

    就您对 PECL 与 node-amqp 的问题而言,我不使用其中任何一种,但您的交换可能在类型或耐用性以外的其他方面有所不同。 “rabbitmqctl list_exchanges name type auto_delete internal arguments”将在返回的表中添加更多列,以显示您的交易所的所有详细信息。或者查看管理插件。

    【讨论】:

    • 感谢您回答我的问题。我对原件进行了编辑,以包含您提到的命令。管理插件是否会指出其他可能的差异?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多