【发布时间】: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