如果我使用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.发布于 2011-04-10 04:25:23
这不是一个标题-它是AMQP的一个稍微令人困惑的方面的结果,那就是有一个直接的交换叫做"“。这是“默认”交换,所有队列都会自动绑定到它。
就您的PECL与node-amqp的问题而言,我没有使用这两种方法,但您的交换可能在类型或持久性之外的其他方面有所不同。"rabbitmqctl list_exchanges name type auto_delete internal arguments“将向返回的表中添加更多列,以显示您的交换的所有详细信息。或者看看管理插件。
https://stackoverflow.com/questions/5607456
复制相似问题