fix(authorization-service): fix KafkaModule dependency injection

- Add ClientsModule with KAFKA_SERVICE registration
- Add EventAckPublisher to KafkaModule providers/exports
- Move EventConsumerController to AppModule (has access to repositories)

Resolves: Nest can't resolve dependencies of EventConsumerController

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-09 21:55:10 -08:00
parent 3f622eb13c
commit 181eeafb2c
2 changed files with 28 additions and 5 deletions

View File

@ -19,6 +19,7 @@ import {
} from '@/infrastructure/persistence/repositories/monthly-assessment.repository.impl' } from '@/infrastructure/persistence/repositories/monthly-assessment.repository.impl'
import { RedisModule } from '@/infrastructure/redis/redis.module' import { RedisModule } from '@/infrastructure/redis/redis.module'
import { KafkaModule } from '@/infrastructure/kafka/kafka.module' import { KafkaModule } from '@/infrastructure/kafka/kafka.module'
import { EventConsumerController } from '@/infrastructure/kafka/event-consumer.controller'
// Application // Application
import { AuthorizationApplicationService, REFERRAL_REPOSITORY, TEAM_STATISTICS_REPOSITORY } from '@/application/services' import { AuthorizationApplicationService, REFERRAL_REPOSITORY, TEAM_STATISTICS_REPOSITORY } from '@/application/services'
@ -69,7 +70,7 @@ const MockTeamStatisticsRepository = {
RedisModule, RedisModule,
KafkaModule, KafkaModule,
], ],
controllers: [AuthorizationController, AdminAuthorizationController, HealthController], controllers: [AuthorizationController, AdminAuthorizationController, HealthController, EventConsumerController],
providers: [ providers: [
// Prisma // Prisma
PrismaService, PrismaService,

View File

@ -1,11 +1,33 @@
import { Module, Global } from '@nestjs/common' import { Module, Global } from '@nestjs/common'
import { ConfigModule, ConfigService } from '@nestjs/config'
import { ClientsModule, Transport } from '@nestjs/microservices'
import { EventPublisherService } from './event-publisher.service' import { EventPublisherService } from './event-publisher.service'
import { EventConsumerController } from './event-consumer.controller' import { EventAckPublisher } from './event-ack.publisher'
@Global() @Global()
@Module({ @Module({
controllers: [EventConsumerController], imports: [
providers: [EventPublisherService], ClientsModule.registerAsync([
exports: [EventPublisherService], {
name: 'KAFKA_SERVICE',
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
transport: Transport.KAFKA,
options: {
client: {
clientId: configService.get<string>('KAFKA_CLIENT_ID', 'authorization-service'),
brokers: configService.get<string>('KAFKA_BROKERS', 'localhost:9092').split(','),
},
consumer: {
groupId: configService.get<string>('KAFKA_GROUP_ID', 'authorization-service-group'),
},
},
}),
inject: [ConfigService],
},
]),
],
providers: [EventPublisherService, EventAckPublisher],
exports: [EventPublisherService, EventAckPublisher, ClientsModule],
}) })
export class KafkaModule {} export class KafkaModule {}