@rxap/nest-rabbitmq
Version:
This package provides a NestJS module for integrating with RabbitMQ using exchanges. It offers a client and server implementation for message queuing and supports features like health checks and error serialization. It simplifies the process of setting up
40 lines (39 loc) • 2.2 kB
TypeScript
import { Logger } from '@nestjs/common/services/logger.service';
import { ClientProxy, ReadPacket, WritePacket } from '@nestjs/microservices';
import { ExchangeRmqOptions } from './options';
import { AmqpConnectionManager, ChannelWrapper } from 'amqp-connection-manager';
import { Channel, Connection } from 'amqplib';
import { EventEmitter } from 'events';
import { Observable, ReplaySubject } from 'rxjs';
export declare const REPLY_QUEUE = "amq.rabbitmq.reply-to";
export interface RmqExchangeOptions {
options?: ExchangeRmqOptions;
}
export declare class ClientRMQExchange extends ClientProxy {
protected readonly options: ExchangeRmqOptions;
protected readonly logger: Logger;
protected connection$: ReplaySubject<Connection>;
protected client: AmqpConnectionManager | null;
protected channel: ChannelWrapper | null;
protected responseEmitter: EventEmitter;
constructor(options: ExchangeRmqOptions, logger?: Logger);
isConnected(): boolean | null;
close(): void;
connect(): Promise<Connection>;
createChannel(): Promise<void>;
createClient(): AmqpConnectionManager;
mergeDisconnectEvent<T = any>(instance: any, source$: Observable<T>): Observable<T>;
convertConnectionToPromise(): Promise<Connection>;
setupExchange(channel: Channel, resolve: () => unknown): Promise<void>;
consumeChannel(channel: Channel): Promise<void>;
handleError(client: AmqpConnectionManager): void;
handleDisconnectError(client: AmqpConnectionManager): void;
handleMessage(packet: unknown, callback: (packet: WritePacket) => any): Promise<void>;
handleMessage(packet: unknown, options: Record<string, unknown>, callback: (packet: WritePacket) => any): Promise<void>;
protected publish(message: ReadPacket, callback: (packet: WritePacket) => any): () => void;
protected dispatchEvent(packet: ReadPacket): Promise<any>;
protected initializeSerializer(options: ExchangeRmqOptions): void;
protected initializeDeserializer(options: ExchangeRmqOptions): void;
protected mergeHeaders(requestHeaders?: Record<string, string>): Record<string, string> | undefined;
protected parseMessageContent(content: Buffer): any;
}