Skip to main content

OpraRabbitmqModule

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

import { OpraRabbitmqModule } from '@opra/nestjs-rabbitmq';

forRoot(options)​

Synchronous registration:

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

@Module({
imports: [
OpraRabbitmqModule.forRoot({
name: 'OrdersApi',
connection: { url: 'amqp://localhost' },
controllers: [OrderController],
}),
],
})
export class AppModule {}

Options (OpraRabbitmqModule.ModuleOptions)​

OptionTypeDescription
namestringAPI name.
descriptionstringOptional API description.
scopestringValidation scope.
connectionRabbitmqAdapter.Config['connection']RabbitMQ connection configuration.
logExtraRabbitmqAdapter.Config['logExtra']Extra log context.
defaultsRabbitmqAdapter.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 | IRabbitmqInterceptor | Type<IRabbitmqInterceptor>)[]Request interceptors.
loggerLoggerCustom logger.

forRootAsync(options)​

Asynchronous registration:

OpraRabbitmqModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (config: ConfigService) => ({
name: 'OrdersApi',
connection: { url: config.get('RABBITMQ_URL') },
controllers: [OrderController],
}),
})

Options (OpraRabbitmqModule.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.