UNPKG

rocketmq-client-nodejs-beta

Version:
67 lines 5.49 kB
"use strict"; /** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExponentialBackoffRetryPolicy = void 0; const node_assert_1 = __importDefault(require("node:assert")); const duration_pb_1 = require("google-protobuf/google/protobuf/duration_pb"); const definition_pb_1 = require("../../proto/apache/rocketmq/v2/definition_pb"); class ExponentialBackoffRetryPolicy { #maxAttempts; // seconds #initialBackoff; #maxBackoff; #backoffMultiplier; constructor(maxAttempts, initialBackoff = 0, maxBackoff = 0, backoffMultiplier = 1) { this.#maxAttempts = maxAttempts; this.#initialBackoff = initialBackoff; this.#maxBackoff = maxBackoff; this.#backoffMultiplier = backoffMultiplier; } static immediatelyRetryPolicy(maxAttempts) { return new ExponentialBackoffRetryPolicy(maxAttempts, 0, 0, 1); } getMaxAttempts() { return this.#maxAttempts; } getNextAttemptDelay(attempt) { (0, node_assert_1.default)(attempt > 0, 'attempt must be positive'); const delay = Math.min(this.#initialBackoff * Math.pow(this.#backoffMultiplier, 1.0 * (attempt - 1)), this.#maxBackoff); if (delay <= 0) { return 0; } return delay; } inheritBackoff(retryPolicy) { (0, node_assert_1.default)(retryPolicy.getStrategyCase() === definition_pb_1.RetryPolicy.StrategyCase.EXPONENTIAL_BACKOFF, 'strategy must be exponential backoff'); const backoff = retryPolicy.getExponentialBackoff().toObject(); return new ExponentialBackoffRetryPolicy(this.#maxAttempts, backoff.initial?.seconds, backoff.max?.seconds, backoff.multiplier); } toProtobuf() { return new definition_pb_1.RetryPolicy() .setMaxAttempts(this.#maxAttempts) .setExponentialBackoff(new definition_pb_1.ExponentialBackoff() .setInitial(new duration_pb_1.Duration().setSeconds(this.#initialBackoff)) .setMax(new duration_pb_1.Duration().setSeconds(this.#maxBackoff)) .setMultiplier(this.#backoffMultiplier)); } } exports.ExponentialBackoffRetryPolicy = ExponentialBackoffRetryPolicy; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb25lbnRpYWxCYWNrb2ZmUmV0cnlQb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmV0cnkvRXhwb25lbnRpYWxCYWNrb2ZmUmV0cnlQb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7Ozs7O0FBRUgsOERBQWlDO0FBQ2pDLDZFQUF1RTtBQUN2RSxnRkFHc0Q7QUFHdEQsTUFBYSw2QkFBNkI7SUFDeEMsWUFBWSxDQUFTO0lBQ3JCLFVBQVU7SUFDVixlQUFlLENBQVM7SUFDeEIsV0FBVyxDQUFTO0lBQ3BCLGtCQUFrQixDQUFTO0lBRTNCLFlBQVksV0FBbUIsRUFBRSxjQUFjLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsaUJBQWlCLEdBQUcsQ0FBQztRQUN4RixJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxXQUFtQjtRQUMvQyxPQUFPLElBQUksNkJBQTZCLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQWU7UUFDakMsSUFBQSxxQkFBTSxFQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hILElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQTBCO1FBQ3ZDLElBQUEscUJBQU0sRUFBQyxXQUFXLENBQUMsZUFBZSxFQUFFLEtBQUssMkJBQWEsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQ3JGLHNDQUFzQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixFQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEUsT0FBTyxJQUFJLDZCQUE2QixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQ3hELE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUN4QixPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFDcEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLDJCQUFhLEVBQUU7YUFDdkIsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDakMscUJBQXFCLENBQ3BCLElBQUksa0NBQWtCLEVBQUU7YUFDckIsVUFBVSxDQUFDLElBQUksc0JBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDM0QsTUFBTSxDQUFDLElBQUksc0JBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDbkQsYUFBYSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztDQUNGO0FBbERELHNFQWtEQyJ9