function connetPromise(reconnectOnConnectionError, closeCallback) { return new Promise(function(resolve, reject) { function startConnect() { amqp.connect(cfgRabbitUrl, cfgRabbitSocketOptions, function(err, conn) { if (null != err) { logger.error('[AMQP] %s', err.stack); if (reconnectOnConnectionError) { setTimeout(startConnect, RECONNECT_TIMEOUT); } else { reject(err); } } else { conn.on('error', function(err) { logger.error('[AMQP] conn error', err.stack); }); var closeEventCallback = function() { //in some case receive multiple close events conn.removeListener('close', closeEventCallback); logger.debug('[AMQP] conn close'); closeCallback(); }; conn.on('close', closeEventCallback); logger.debug('[AMQP] connected'); resolve(conn); } }); } startConnect(); }); }
function connetPromise(reconnectOnConnectionError, closeCallback) { return new Promise(function(resolve, reject) { function startConnect() { amqp.connect(cfgRabbitUrl, cfgRabbitSocketOptions, function(err, conn) { if (null != err) { logger.error('[AMQP] %s', err.stack); if (reconnectOnConnectionError) { setTimeout(startConnect, RECONNECT_TIMEOUT); } else { reject(err); } } else { conn.on('error', function(err) { logger.error('[AMQP] conn error', err.stack); }); var closeEventCallback = function() { //in some case receive multiple close events conn.removeListener('close', closeEventCallback); logger.debug('[AMQP] conn close'); closeCallback(); }; conn.on('close', closeEventCallback); logger.debug('[AMQP] connected'); resolve(conn); } }); } startConnect(); }); }