rocketmq-client-nodejs
Version:
RocketMQ Node.js Client
53 lines • 3.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConsumeService = void 0;
const ConsumeResult_1 = require("./ConsumeResult");
const ConsumeTask_1 = require("./ConsumeTask");
class ConsumeService {
clientId;
#messageListener;
#aborted = false;
#pendingTimers = new Set();
constructor(clientId, messageListener) {
this.clientId = clientId;
this.#messageListener = messageListener;
}
async consumeMessage(messageView, delay = 0) {
if (this.#aborted) {
return ConsumeResult_1.ConsumeResult.FAILURE;
}
const task = new ConsumeTask_1.ConsumeTask(this.clientId, this.#messageListener, messageView);
if (delay <= 0) {
return this.#executeTask(task);
}
return new Promise(resolve => {
const timer = setTimeout(async () => {
this.#pendingTimers.delete(timer);
if (this.#aborted) {
resolve(ConsumeResult_1.ConsumeResult.FAILURE);
return;
}
const result = await this.#executeTask(task);
resolve(result);
}, delay);
this.#pendingTimers.add(timer);
});
}
async #executeTask(task) {
try {
return await task.call();
}
catch (error) {
return ConsumeResult_1.ConsumeResult.FAILURE;
}
}
abort() {
this.#aborted = true;
for (const timer of this.#pendingTimers) {
clearTimeout(timer);
}
this.#pendingTimers.clear();
}
}
exports.ConsumeService = ConsumeService;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3VtZVNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3VtZXIvQ29uc3VtZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBaUJBLG1EQUFnRDtBQUNoRCwrQ0FBNEM7QUFJNUMsTUFBc0IsY0FBYztJQUNmLFFBQVEsQ0FBUztJQUMzQixnQkFBZ0IsQ0FBa0I7SUFDM0MsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixjQUFjLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFaEQsWUFBWSxRQUFnQixFQUFFLGVBQWdDO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7SUFDMUMsQ0FBQztJQUlELEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBd0IsRUFBRSxLQUFLLEdBQUcsQ0FBQztRQUN0RCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLDZCQUFhLENBQUMsT0FBTyxDQUFDO1FBQy9CLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEYsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2xCLE9BQU8sQ0FBQyw2QkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMvQixPQUFPO2dCQUNULENBQUM7Z0JBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFpQjtRQUNsQyxJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyw2QkFBYSxDQUFDLE9BQU8sQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUNELEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBakRELHdDQWlEQyJ9