我使用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"
- 事件是eveytime,我称之为路线。我可能会认为这是因为Express服务http请求的方式 - 为每个被调用的路由执行server.js。因此,对于每个请求,都会创建一个connection
的新实例,并在其上准备好"准备好" app尝试再创建一个Express服务器实例。
如何从我的应用程序的任何一点访问amqp_connection,但是在我需要向RabbitMQ推送内容的每一点都没有加倍require("amqp").createConnection()
?
UPD:或者Express可能没问题。 node-amqp似乎在创建后每秒触发就绪事件。不知道它是否是正确的行为
谢谢。