Инициализация модуля event-emitter на старте

This commit is contained in:
Pavel Gnedov 2022-07-18 13:54:16 +07:00
parent e7bb2ba8cd
commit 4e31ebaafd

View file

@ -1,4 +1,4 @@
import { DynamicModule, Module } from '@nestjs/common'; import { DynamicModule, Logger, Module, OnModuleInit } from '@nestjs/common';
import { EventEmitterService } from './event-emitter.service'; import { EventEmitterService } from './event-emitter.service';
import { RedmineEventsGateway } from './events/redmine-events.gateway'; import { RedmineEventsGateway } from './events/redmine-events.gateway';
import { ServeStaticModule } from '@nestjs/serve-static'; import { ServeStaticModule } from '@nestjs/serve-static';
@ -12,9 +12,10 @@ import { RedmineIssuesCacheWriterService } from './issue-cache-writer/redmine-is
import { CouchDb } from './couchdb-datasources/couchdb'; import { CouchDb } from './couchdb-datasources/couchdb';
import { Users } from './couchdb-datasources/users'; import { Users } from './couchdb-datasources/users';
import { Issues } from './couchdb-datasources/issues'; import { Issues } from './couchdb-datasources/issues';
import { RedmineTypes } from '@app/redmine-types/index';
@Module({}) @Module({})
export class EventEmitterModule { export class EventEmitterModule implements OnModuleInit {
static register(params?: ModuleParams): DynamicModule { static register(params?: ModuleParams): DynamicModule {
return { return {
module: EventEmitterModule, module: EventEmitterModule,
@ -45,4 +46,41 @@ export class EventEmitterModule {
controllers: [MainController], controllers: [MainController],
}; };
} }
private logger = new Logger(EventEmitterModule.name);
constructor(
private redmineEventsGateway: RedmineEventsGateway,
private redmineIssuesCacheWriterService: RedmineIssuesCacheWriterService,
) {}
onModuleInit() {
const queue = this.redmineEventsGateway.getIssuesChangesQueue();
const subj = queue.queue;
subj.subscribe(async (issues: any) => {
this.logger.debug(`Changed issues = ${JSON.stringify(issues)}`);
for (let i = 0; i < issues.length; i++) {
const issue: RedmineTypes.Issue = issues[i];
try {
this.logger.debug(
`Save issue #${issue.id} - ${JSON.stringify(issue)}`,
);
const response = await this.redmineIssuesCacheWriterService.saveIssue(
issue,
);
this.logger.debug(
`Save issue #${issue.id} response = ${JSON.stringify(response)}`,
);
} catch (ex) {
this.logger.error(`Saving issue error - ${ex}`, null, {
issue: issue,
});
}
}
});
}
} }