#nodejsで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.')
}
})