【发布时间】:2013-10-23 08:29:23
【问题描述】:
我有快速服务器设置来监听发布请求并将发布请求放入消息队列
var express = require('express');
var app = express();
app.use(express.bodyParser());
app.post('/test-page', function(req, res) {
var amqp = require('amqp');
var connection = amqp.createConnection({url: "amqp://guest:guest@localhost:5672"},{defaultExchangeName: ''});
connection.on('ready',function(){
console.log('connected');
var messageToSend = req.body;
var queueToSendTo = "xyz";
connection.queue(queueToSendTo,{'passive': true},function(){
connection.publish(queueToSendTo, messageToSend);
res.send(200);
connection.end();
});
});
});
app.setMaxListeners(0);
app.listen(80);
上面的代码是假设收集post请求并放入队列,如果我发送10个请求,队列中将有300多条消息。我不理解这种行为,或者我对将 'publish' 调用放入 'ready' 函数的理解是错误的,因为上面代码中的 'connected' 日志消息对于 10 个 post 请求打印超过 10 个。
是因为 'connection.end' 没有关闭连接吗?
我希望将每个发布请求转换为 RabbitMQ 中的消息, 如果有更好的方法,请指教。
(我在 ubuntu 12.04 上使用最新的 node-amqp master 和 rabbit-server-3.1.4-1)
【问题讨论】:
标签: node.js rabbitmq node-amqp