我有快速服务器设置来监听发布请求并将发布请求放入消息队列
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);
上面的代码假设收集发布请求并放入队列,如果我发送 10 个请求,队列中将有 300 多条消息。我不理解这种行为,或者可能是我对将 'publish' 调用放入 'ready' 函数的理解是错误的,因为上面代码中的 'connected' 日志消息对于 10 个 post 请求打印超过 10 个。
是否由于“connection.end”未关闭连接而发生?
我想将每个 post 请求转换为 RabbitMQ 中的消息,请告知是否有更好的方法。
(我在 ubuntu 12.04 上使用最新的 node-amqp master 和 rabbit-server-3.1.4-1)