UNPKG

@nam088/nestjs-rabbitmq

Version:

A comprehensive RabbitMQ module for NestJS with decorator-based message handling

68 lines (67 loc) 2.26 kB
import type { ModuleMetadata, Type } from '@nestjs/common'; import type { ServiceDiscoveryOptions } from './service-discovery.interface'; import type { Options } from 'amqplib'; export interface ConnectionOptions { connectionTimeout?: number; heartbeatIntervalInSeconds?: number; reconnectTimeInSeconds?: number; } export interface ExchangeConfig { name: string; options?: Options.AssertExchange; type: 'direct' | 'fanout' | 'headers' | 'topic'; } export interface PublishOptions extends Options.Publish { appId?: string; expiration?: number | string; headers?: any; messageId?: string; priority?: number; timestamp?: number; type?: string; userId?: string; } export interface QueueConfig { name: string; options?: Options.AssertQueue; } export interface RabbitMQModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> { connectionName?: string; inject?: any[]; useClass?: Type<RabbitMQOptionsFactory>; useExisting?: Type<RabbitMQOptionsFactory>; useFactory?: (...args: any[]) => Promise<RabbitMQModuleOptions> | RabbitMQModuleOptions; } export interface RabbitMQModuleOptions { autoDiscover?: boolean; autoReconnect?: boolean; connectionName?: string; connectionOptions?: ConnectionOptions; exchanges?: ExchangeConfig[]; excludeProviders?: Array<string | symbol | Type>; includeModules?: Array<string | Type>; includeProviders?: Array<string | symbol | Type>; logLevel?: 'debug' | 'error' | 'log' | 'none' | 'warn'; prefetchCount?: number; queues?: QueueConfig[]; scanScope?: 'all' | 'annotated' | 'modules' | 'providers'; serviceDiscovery?: ServiceDiscoveryOptions; uri: string; } export interface RabbitMQOptionsFactory { createRabbitMQOptions: () => Promise<RabbitMQModuleOptions> | RabbitMQModuleOptions; } export interface RabbitSubscribeOptions { connectionName?: string; consumeOptions?: Options.Consume; errorHandler?: (error: Error, message: any) => Promise<void> | void; exchange?: string; queue: string; queueOptions?: Options.AssertQueue; routingKey?: string; rpc?: boolean; } export interface RpcOptions { publishOptions?: PublishOptions; timeout?: number; }