【问题标题】:node-amqp — proper way to handle connection in Express app?node-amqp — 在 Express 应用程序中处理连接的正确方法?
【发布时间】:2014-12-18 08:31:17
【问题描述】:

我将 Express 与 node-amqp 一起使用。我的目标是在服务器启动之前创建 amqpConnection 并将其保存到全局对象中,并且在 Express 路由中使用之前创建的 globals.amqp_connection

### server.coffee

app.use( ... )
...

# create RabbitMQ connection before server starts
connection = require("amqp").createConnection
  host: "localhost"

connection.on "ready", ->

  console.log "Got connection.on(\"ready\") event from node-amqp..."

  # make amqp_connection accessible from any point of application
  globals.amqp_connection = connection

  server = globals.http.createServer(app).listen(8082)

  console.log "Express server is listening 8082..."

问题是connection.on "ready"-event 每次我调用路由时都会触发。我可能认为这是因为 Express 服务 http-requests 的方式——为每个调用的路由执行 server.js。因此,对于每个请求,都会创建一个 connection 的新实例,并且“就绪”的应用程序会尝试在其上再创建一个 Express 服务器实例。

如何使 amqp_connection 可以从我的应用程序的任何点访问,但在我需要向 RabbitMQ 推送内容的每个点都不会加倍 require("amqp").createConnection()

UPD: 或者 Express 可能没有问题。 node-amqp 似乎在创建后每秒触发一次就绪事件。不知道这样是否正确

谢谢。

【问题讨论】:

    标签: node.js express rabbitmq node-amqp


    【解决方案1】:

    Ready 事件触发多个'连接错误的原因:

    https://github.com/postwait/node-amqp/issues/255

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2017-02-28
      • 1970-01-01
      • 2014-11-20
      相关资源
      最近更新 更多