[英]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.