kafka-ts
Version:
**KafkaTS** is a Apache Kafka client library for Node.js. It provides both a low-level API for communicating directly with the Apache Kafka cluster and high-level APIs for publishing and subscribing to Kafka topics.
30 lines (29 loc) • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultRetrier = exports.createExponentialBackoffRetrier = void 0;
const delay_1 = require("./delay");
const logger_1 = require("./logger");
const createExponentialBackoffRetrier = ({ retries = 5, initialDelayMs = 100, maxDelayMs = 3000, multiplier = 2, onFailure = (error) => {
throw error;
}, } = {}) => async (func) => {
let retriesLeft = retries;
let delayMs = initialDelayMs;
let lastError;
while (true) {
try {
await func();
return;
}
catch (error) {
lastError = error;
}
logger_1.log.debug(`Failed to process batch (retriesLeft: ${retriesLeft})`);
if (--retriesLeft < 1)
break;
await (0, delay_1.delay)(delayMs);
delayMs = Math.min(maxDelayMs, delayMs * multiplier);
}
await onFailure(lastError);
};
exports.createExponentialBackoffRetrier = createExponentialBackoffRetrier;
exports.defaultRetrier = (0, exports.createExponentialBackoffRetrier)();