我想连续多次发送相同的消息,但我需要使用循环。当我使用循环时,不会发送任何消息。我在Nodejs中使用amqp。
以下是发送单个邮件的工作代码。我该怎么办才能送多个人。我已经尝试在connection.publish
部分周围缠绕一个while循环,但没有发送任何内容。
var amqp = require('amqp');
var connection = amqp.createConnection({url: "amqp://tester:tstpsswrd@10.4.52.115:5672"});
connection.on('ready', function () {
connection.queue('my-queue', function (q) {
connection.publish('my-queue', 'hi');
});
});
我很肯定我在这里做了一些愚蠢的错误,或者可能会遗漏一些东西。第一次使用rabbitmq。
更新,循环示例
var amqp = require('amqp');
var connection = amqp.createConnection({url: "amqp://tester:tstpsswrd@10.4.52.115:5672"});
connection.on('ready', function () {
connection.queue('my-queue', function (q) {
while(true){
connection.publish('my-queue', 'hi');
}
});
});
答案 0 :(得分:0)
在实际情况中,您不能也不应该有一个无限循环来写入消息代理。必须有一些基于事件的事物或适当定义的数字。 试试这段代码,你可以根据你的要求使用for循环:
var amqp = require('amqp');
var connection = amqp.createConnection({ host: 'localhost', port: 5672});
connection.on('ready', function () {
for(var i=0; i<1000; i++){
var status = writeOnQueue("testing the queue"+i);
}
});
function writeOnQueue(xml){
var msg = xml;
console.log(msg);
try{
connection.exchange('test-exchange', {confirm: true},function(exchange) {
publish = exchange.publish('my-queue',msg, { mandatory: false });
console.log('sent the message success test-exchange');
return true;
});
}
catch(e){
console.log('Some error occured.'+ e);
}
}