rocketmq-client-nodejs-beta
Version:
RocketMQ Node.js Client
67 lines • 5.49 kB
JavaScript
;
/**
* 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