pg-trx-outbox
Version:
Transactional outbox of Postgres for Node.js with little Event Sourcing
23 lines (22 loc) • 974 B
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GroupedAsyncAdapter = void 0;
const p_queue_1 = __importDefault(require("p-queue"));
const base_ts_1 = require("./base.js");
class GroupedAsyncAdapter extends base_ts_1.BaseAdapter {
queues = new Map();
async send(messages) {
const resp = [];
for (const message of messages) {
if (!this.queues.has(message.key)) {
this.queues.set(message.key, new p_queue_1.default({ concurrency: 1 }).once('idle', () => this.queues.delete(message.key)));
}
resp.push(this.queues.get(message.key).add(() => this.baseHandleMessage(message), { priority: message.is_event ? 1 : 0 }));
}
return await Promise.all(resp);
}
}
exports.GroupedAsyncAdapter = GroupedAsyncAdapter;