diff --git a/oracle/src/services/amqpClient.js b/oracle/src/services/amqpClient.js index 31eb2a62..89ee680d 100644 --- a/oracle/src/services/amqpClient.js +++ b/oracle/src/services/amqpClient.js @@ -1,6 +1,7 @@ require('../../env') const connection = require('amqp-connection-manager').connect(process.env.QUEUE_URL) const logger = require('./logger') +const { getRetrySequence } = require('../utils/utils') connection.on('connect', () => { logger.info('Connected to amqp Broker') @@ -44,7 +45,7 @@ function connectSenderToQueue({ queueName, cb }) { nackMsg: job => channelWrapper.nack(job, false, true), scheduleForRetry: async (data, msgRetries = 0) => { const retries = msgRetries + 1 - const delay = retries ** 2 * 1000 + const delay = getRetrySequence(retries) * 1000 const retryQueue = `${queueName}-retry-${delay}` await channel.assertQueue(retryQueue, { durable: true, diff --git a/oracle/src/utils/utils.js b/oracle/src/utils/utils.js index 8d59bdb1..124820fa 100644 --- a/oracle/src/utils/utils.js +++ b/oracle/src/utils/utils.js @@ -2,6 +2,14 @@ const BigNumber = require('bignumber.js') const promiseRetry = require('promise-retry') const Web3 = require('web3') +const retrySequence = [1, 2, 3, 5, 8, 13, 21, 34, 55, 60] + +function getRetrySequence(count) { + return count > retrySequence.length + ? retrySequence[retrySequence.length - 1] + : retrySequence[count - 1] +} + async function syncForEach(array, callback) { for (let index = 0; index < array.length; index++) { await callback(array[index], index, array) @@ -112,5 +120,6 @@ module.exports = { setIntervalAndRun, watchdog, privateKeyToAddress, - nonceError + nonceError, + getRetrySequence }