nodejs-event-driven
Version:
NodeJS agnostic event driven with EventEmitter support
45 lines • 1.8 kB
JavaScript
import { BaseEventBusService } from './base-event-bus.service.js';
import FsEventBusService from './infra/event-bus/fs/fs-event-bus.service.js';
import MemoryEventBusService from './infra/event-bus/memory/memory-event-bus.service.js';
import RabbitmqEventBusService from './infra/event-bus/rabbitmq/rabbitmq-event-bus.service.js';
import RedisEventBusService from './infra/event-bus/redis/redis-event-bus.service.js';
export default class EventBusService extends BaseEventBusService {
#eventBusServiceImpl;
constructor(config) {
super();
if (config.type === 'fs') {
this.#eventBusServiceImpl = new FsEventBusService(config);
}
else if (config.type === 'redis') {
this.#eventBusServiceImpl = new RedisEventBusService(config);
}
else if (config.type === 'rabbitmq') {
this.#eventBusServiceImpl = new RabbitmqEventBusService(config);
}
else {
this.#eventBusServiceImpl = new MemoryEventBusService(config);
}
}
send(eventName, data) {
this.#eventBusServiceImpl.send(eventName, data);
}
on(eventName, listener) {
this.#eventBusServiceImpl.on(eventName, listener);
}
once(eventName, listener) {
this.#eventBusServiceImpl.once(eventName, listener);
}
off(eventName, listener) {
this.#eventBusServiceImpl.off(eventName, listener);
}
sendAndWait(sendEventName, successEventName, errorEventName, data) {
return this.#eventBusServiceImpl.sendAndWait(sendEventName, successEventName, errorEventName, data);
}
async start() {
await this.#eventBusServiceImpl.start();
}
async stop() {
await this.#eventBusServiceImpl.stop();
}
}
//# sourceMappingURL=event-bus.service.js.map