【问题标题】:either 'when-js' or basic amqplib rabbitmq nodejs tutorial not working'when-js' 或基本 amqplib rabbitmq nodejs 教程不起作用
【发布时间】:2013-11-06 04:34:24
【问题描述】:

我有最新版本的nodejs(0.10.21,amqplib(0.1.0)(https://github.com/squaremo/amqp.node.git)和rabbitmq(3.2.0)。

  1. 启动rabbitmq-server
  2. 安装 npm 包后转到 amqp.node/examples/tutorials 并运行 ./send.js。

它报告: [x] Sent 'Hello World!'

从 rabbitmq Web 控制台,我可以看到它创建了连接,它创建了队列“hello”。但是,它实际上并没有向队列发布任何消息。

除了 RPC 客户端/服务器之外,其他教程都不适合我 - 它们将创建交换、队列和通道,但不会发布消息。

我的一个朋友在使用除 OS X 10.6 而不是 10.8 之外的所有相同版本时运行良好。

我已经使用节点检查器逐步检查了 amqplib 代码,但看不到任何明显的错误。看起来确实没有创建消息框架,但是在那个级别上,我现在不知道发生了什么。

当我通过 Web 控制台或使用 Bunny + Ruby 发布消息时,它会创建一个队列并按预期发布消息,因此它一定是 node、amqp 和/或 OS X 10.8 而不是 rabbitmq 的问题。

rabbitmq 日志(同时跟踪两个日志)只提到连接打开然后很快关闭,但没有报告任何错误:

=INFO REPORT==== 27-Oct-2013::20:46:16 === accepting AMQP connection <0.731.0> (127.0.0.1:56927 -> 127.0.0.1:5672)

=INFO REPORT==== 27-Oct-2013::20:46:16 === closing AMQP connection <0.731.0> (127.0.0.1:56927 -> 127.0.0.1:5672)

我已经嗅到了从 amqp 节点发送到 rabbitmq 的数据包。这来自 amqp.node 在示例/教程中运行第一个示例“send.js”:

http://www.limorph.com/files/amqp_amqnode_send.txt

您可以看到它如何打开连接、创建队列和关闭连接,但没有发送消息。

这个来自 ruby​​/bunny - 你可以看到它是如何打开连接、创建队列和发布消息的。

http://www.limorph.com/files/amqp_bunny.txt

我发现如果我删除 conn.close(),它会设法发布消息。

例如

})).ensure(function() {
    //          conn.close();
});;

不是真正的解决方案,但它指出问题可能出在“何时”而不是 amqplib 中?

非常感谢任何想法或帮助

【问题讨论】:

  • 这是因为我运行了 'npm install' 而不是 'npm install amqplib' 或 'npm install ../..' 。这意味着我正在运行 2.5.1 版的“何时”,它有某种故障竞争条件,会过早关闭连接。当运行 amqplib 锁定的 2.1.1 版本时,它工作正常。

标签: node.js rabbitmq amqp when-js


【解决方案1】:

简短的回答是:关闭连接会放弃任何尚未写入套接字的操作。

似乎较新的 when.js 版本(例如 v2.5.1)在写入消息之前设法调用 ensure 子句,关闭连接。

也许奇怪的是,它是如此一致——我没有看到它在 when.js 2.5.1 上成功,我也没有看到它在 when.js 2.1.1 上失败。无论如何,修复它的方法是在发布后同步某些东西;比如关闭频道。

https://github.com/squaremo/amqp.node/issues/28 有更多详细信息

【讨论】:

    【解决方案2】:

    这是因为我运行的是 'npm install' 而不是 'npm install amqplib' 或 'npm install ../..' 。这意味着我正在运行 2.5.1 版的“何时”,它有某种故障竞争条件,会过早关闭连接。当运行 amqplib 锁定的 2.1.1 版本时,它工作正常。 -

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      相关资源
      最近更新 更多