2011-09-27 37 views
2

我一直在玩apache + php的RabbitMQ,想看看它与Node.JS在性能上的对比。RabbitMQ + Node.JS连接问题,帧大小太大?

使用最新的node.js(0.4.12)和amqp模块(npm install amqp),我得到一个未知的异常连接,它看起来像是导致错误的帧大小(amqp.js中的第181行),从代码中删除错误只是抛出另一个与分配数组大小过大有关的错误。

RabbitMQ服务器只是一个默认配置的“apt-get install rabbitmq-server”。这在PHP中工作得很好。

Starting ... AMQP URL: amqp://localhost 

events.js:47 
     throw new Error("Uncaught, unspecified 'error' event."); 
      ^
Error: Uncaught, unspecified 'error' event. 
    at Connection.emit (events.js:47:15) 
    at AMQPParser.onError (/nodeJS_stuff/node_modules/amqp/amqp.js:839:12) 
    at AMQPParser.throwError (/nodeJS_stuff/node_modules/amqp/amqp.js:145:25) 
    at AMQPParser.execute (/nodeJS_stuff/node_modules/amqp/amqp.js:181:18) 
    at Connection.<anonymous> (/nodeJS_stuff/node_modules/amqp/amqp.js:851:12) 
    at Connection.emit (events.js:64:17) 
    at Connection._onReadable (net.js:672:14) 
at IOWatcher.onReadable [as callback] (net.js:177:10) 

有没有人遇到过这个?我已经尝试了几个例子,我总是得到这个。我也在EC2上运行它,如果这有帮助的话。

回答

0

我今天刚看到这个问题。在我看来,像rabbitmq和amqp的版本不匹配。我测试了两个版本的node-amqp(0.0.2和0.1.0)和rabbitmq(1.7.2和2.3.1)。我发现node-amqp 0.0.2适用于两个版本的rabbitmq,但更新的node-amqp(0.1.0,实际上版本为0.0.6)不适用于较老的rabbitmq。因此,请尝试将您的node-amqp回滚到较旧的版本并查看它是否有效。

1

这绝对是amqp和RabbitMQ的安装版本之间的版本不匹配。这个问题很可能是由于rabbitmq-server太旧了。我在Debian机器上遇到了完全相同的问题,RabbitMQ installation guide指出我正确的方向。

卸载当前版本的rabbitmq-server并从RabbitMQ网站下载最新版本。

+1

包管理器包含旧版本的RabbitMQ,直接从网站下载最新版本是正确的解决方案。 – Niels