first commit
This commit is contained in:
9
src/events/events.module.ts
Normal file
9
src/events/events.module.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Global, Module } from '@nestjs/common';
|
||||
import { EventsService } from './events.service';
|
||||
|
||||
@Global()
|
||||
@Module({
|
||||
providers: [EventsService],
|
||||
exports: [EventsService],
|
||||
})
|
||||
export class EventsModule {}
|
||||
35
src/events/events.service.ts
Normal file
35
src/events/events.service.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import {
|
||||
ClientProxy,
|
||||
ClientProxyFactory,
|
||||
Transport,
|
||||
} from '@nestjs/microservices';
|
||||
import { ConfigService } from '@nestjs/config';
|
||||
import { PinoLogger } from 'nestjs-pino';
|
||||
|
||||
@Injectable()
|
||||
export class EventsService {
|
||||
private client: ClientProxy;
|
||||
|
||||
constructor(
|
||||
private readonly configService: ConfigService,
|
||||
private readonly logger: PinoLogger,
|
||||
) {
|
||||
this.logger.setContext(EventsService.name);
|
||||
this.client = ClientProxyFactory.create({
|
||||
transport: Transport.RMQ,
|
||||
options: {
|
||||
urls: [this.configService.get<string>('app.rabbitmq.url')!],
|
||||
queue: 'sso_events',
|
||||
queueOptions: { durable: true },
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
emit(pattern: string, data: Record<string, unknown>): void {
|
||||
this.client.emit(pattern, data).subscribe({
|
||||
error: (err: Error) =>
|
||||
this.logger.error({ err, pattern }, 'Failed to emit event'),
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user