Skip to main content

OpraKafkaModule

NestJS dynamic module that wires OPRA's Kafka adapter into a NestJS application.

import { OpraKafkaModule } from '@opra/nestjs-kafka';

forRoot(options)​

Synchronous registration:

import { Module } from '@nestjs/common';
import { OpraKafkaModule } from '@opra/nestjs-kafka';
import { OrderController } from './controllers/order.controller.js';

@Module({
imports: [
OpraKafkaModule.forRoot({
name: 'OrdersApi',
client: {
brokers: ['localhost:9092'],
},
consumers: [
{ groupId: 'orders-group' },
],
controllers: [OrderController],
}),
],
})
export class AppModule {}

Options (OpraKafkaModule.ModuleOptions)​

OptionTypeDescription
namestringAPI name.
descriptionstringOptional API description.
scopestringValidation scope.
clientKafkaAdapter.Config['client']Kafka client configuration (brokers, SSL, SASL…).
consumersKafkaAdapter.Config['consumers']Consumer group configuration.
logExtraKafkaAdapter.Config['logExtra']Extra log context.
defaultsKafkaAdapter.Config['defaults']Default consumer/producer settings.
typesType[]Data types to register on the ApiDocument.
referencesobjectType references.
infoobjectAPI info metadata.
controllersType[]OPRA MQ controller classes.
providersProvider[]Additional NestJS providers.
exportsany[]Providers to export.
importsany[]Modules to import.
globalbooleanRegister globally.
idanyCustom module ID.
interceptors(InterceptorFunction | IKafkaInterceptor | Type<IKafkaInterceptor>)[]Request interceptors.
loggerLoggerCustom logger.

forRootAsync(options)​

Asynchronous registration:

OpraKafkaModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (config: ConfigService) => ({
name: 'OrdersApi',
client: { brokers: config.get('KAFKA_BROKERS').split(',') },
consumers: [{ groupId: config.get('KAFKA_GROUP_ID') }],
controllers: [OrderController],
}),
})

Options (OpraKafkaModule.AsyncModuleOptions)​

OptionTypeDescription
injectany[]Providers to inject into useFactory.
useFactory(...args) => ApiConfig | Promise<ApiConfig>Factory returning the API configuration.

Plus all non-API fields from ModuleOptions (id, controllers, providers, exports, imports, global, interceptors).