在使用Node.js向Aerospike添加记录时的重试处理

使用Node.js向Aerospike添加记录。

client.put(key, rec, function (error) {
  if (error) {
    console.log('error: %s', error.message)
    //TODO: retry
  } else {
    console.log('Record written to database successfully.')
  } 
})

发生错误时进行重试。

function retryPutItemToDataStore(client, key, record, retryTimes, retryDelay, callback) {
        let retryCount = 0
        function retry() {
            client.put(key, record, function (error) {
                ++retryCount
                if (error) {
                    if (retryCount >= retryTimes) {
                        logger.error('Putitem Error: %s [%d]\n%s', error.message, error.code, error.stack)
                        callback(err)
                    } else {
                        setTimeout(run, retryDelay);
                    }
                } else {
                    //success, send the record out
                    callback(null, record)
                }
            })
        }
        retry()
    }

将记录的添加处理转换为以下内容

client.put(key, rec, function (error) {
    if (error) {
        console.log('error: %s', error.message)
        //retry
        retryPutItemToDataStore(client, key, record, 5, 1000, function(err, data) {
        if (err) {
               //5回リトライしてもエラーの場合
               process.exit(-1)
           } else {
                 logger.info('Record written to database successfully.')
           }
        })
    } else {
        console.log('Record written to database successfully.')
   } 
})
bannerAds