24 lines
832 B
JavaScript
24 lines
832 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.InProcessEventBus = void 0;
|
|
const events_1 = require("events");
|
|
class InProcessEventBus {
|
|
constructor(logger) {
|
|
this.emitter = new events_1.EventEmitter();
|
|
this.emitter.setMaxListeners(50);
|
|
this.logger = logger;
|
|
}
|
|
async publish(event) {
|
|
this.logger.debug({ eventName: event.eventName, aggregateId: event.aggregateId }, 'Publishing domain event');
|
|
this.emitter.emit(event.eventName, event);
|
|
}
|
|
subscribe(eventName, handler) {
|
|
this.emitter.on(eventName, (event) => {
|
|
handler.handle(event).catch((err) => {
|
|
this.logger.error({ eventName, err }, 'Error in event handler');
|
|
});
|
|
});
|
|
}
|
|
}
|
|
exports.InProcessEventBus = InProcessEventBus;
|