nodejs,amqp发布和订阅之间的无限循环

时间:2014-12-11 16:42:15

标签: node.js rabbitmq amqp

我有两个模块连接到rabbitmq。 模块A向模块B发送消息 模块B执行一些逻辑,并将响应发送回A 模块A继续工作。 模块A:

var connection = amqp.createConnection(rabbitserver);
        connection.on('ready', function () {
            connection.publish('queue1', rabbitserver.login + ":" + param);
            connection.queue('queue2', {autoDelete: false}, function (queue) {
                queue.subscribe(function (msg) {
                    console.log("response recieved");
                    connection.disconnect();
                });
            });
        });

模块B:

connection.on('ready', function(){
    connection.queue('queue1', {autoDelete: false}, function(queue){
        queue.subscribe(function(msg) {
             var login, param, parts = msg.data.toString('utf-8').split(';');
             login = parts[0];
             fname = parts[1];
             result = somefucntion(login,param);
             connection.publish('queue2',result);
             console.log("send")
        });
    });
});

当我同时开始时,我收到了无数的消息"收到的回复"和"发送"在我的游戏机里。

我已阅读amqp文档但我无法找到任何解决方案。还有一种更好的方法来处理这些简单的反应吗?

1 个答案:

答案 0 :(得分:0)

如果任何原因断开连接,连接会自动重新连接 - 包括故意断开连接。您可能希望禁用此行为:

var connection = amqp.createConnection(rabbitserver, { reconnect: false });