0
我有明確的服務器設置,聽取職務的請求,並把在消息隊列發佈請求節點AMQP +的RabbitMQ如何POST請求轉換成消息
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:[email protected]: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多條消息。我不理解這種行爲,或者可能是因爲上面的代碼中的「連接」日誌消息在10個發佈請求中打印超過10個,因此我認爲將'發佈'調用放在'就緒'功能中是錯誤的。
是否因'connection.end'未關閉連接而發生?
我希望將每個帖子請求轉換爲RabbitMQ中的消息, 請告知是否有更好的方法。
(我用的節點AMQP的最新主兔服務器-3.1.4-1在Ubuntu 12.04)
該訣竅。完美工作。謝謝。然而,由於默認的'reconnect:true'值,連接沒有結束。對於那些堅持每次創建新連接的用戶,都應該使用'connection.implOptions.reconnect = false'這一行。將解決原來的問題。雖然最好的辦法是接受答案。 – sachinkale