繁体   English   中英

当amqp重新启动时出现读取ECONNRESET

[英]Read ECONNRESET comes up when amqp restarts

目前我创建了一个Sender类客户端,它可以向amqp发送消息,还可以重新连接到amqp。 当需要将消息发送到amqp时,如果连接失败,Sender可以尝试重新连接到amqp三次。 以下是代码https://gist.github.com/richzw/e39237aa1fe31c15a587

然后,我用以下代码对其进行测试,

var Sender = require('./sender.js');
var amqpAddress = 'amqp://localhost';
var sender = new Sender( amqpAddress, 2000, 3, sendMessageCallback );

function sendMessageCallback( ) {
    console.error('Message can NOT be sent due to MessageBus error');
}

// send message every 5 seconds
var CronJob = require('cron').CronJob;
var send_message_job = new CronJob({
    cronTime: '*/5 * * * * *',
    onTick: function(){
         sender.deliverMessage( key, msg );
    },
    start: true,
});

send_message_job.start();

然后,我尝试停止并随机启动amqp服务。 我发现当我第一次重新启动amqp服务时,发件人可以继续正常发送消息。 但是,当我尝试第二次停止服务 ,出现以下错误,程序崩溃。

Error: read ECONNRESET at errnoException (net.js:905:11) at TCP.onread (net.js:559:19)

我尝试在相同的情况下对其进行多次测试,以上错误总是在第二次出现 为什么? 谁能帮我弄清楚如何处理?

实际上,可以在error事件中捕获异常ECONNRESET

Sender.prototype.handleDisconnections_ = function() {
    return this.con_.on('error', (function( that ) {
        return function( err ) {
            //if ( err.code === 'ECONNRESET' ) {
                //return when.reject( err );
            //}

            return that;//.retryConnect_( that.attempts_, that.retryDelay_ , err );
        };
    })(this));
}; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM