fase(2): shared infrastructure layer
This commit is contained in:
23
dist/shared/infrastructure/InProcessEventBus.js
vendored
Normal file
23
dist/shared/infrastructure/InProcessEventBus.js
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
"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;
|
||||
Reference in New Issue
Block a user