@goparrot/pubsub-event-bus
Version:
NestJS EventBus extension for RabbitMQ PubSub
43 lines (42 loc) • 2.23 kB
TypeScript
/// <reference types="node" />
import type { ConfirmChannel, ConsumeMessage, Message } from 'amqplib';
import type { IChannelWrapper, IEventWrapper, IHandlerWrapper, PublishOptions } from '../interface';
import { BindingQueueOptions, DefaultedRetryOptions, IConsumerOptions } from '../interface';
import { PrepareHandlerStrategies, RetryStrategies } from '../provider';
import { EventBus } from './EventBus';
import { PubsubManager } from './PubsubManager';
export declare class Consumer extends PubsubManager implements IChannelWrapper {
private readonly eventBus;
private readonly retryStrategies;
protected readonly options: IConsumerOptions;
private readonly rootRetryOptions;
private readonly bindingQueueOptions;
private readonly prepareHandlerStrategies;
/**
* Set of exchanges that handlers listen to
*/
private readonly exchanges;
constructor(eventBus: EventBus, retryStrategies: RetryStrategies, options: IConsumerOptions, rootRetryOptions: DefaultedRetryOptions, bindingQueueOptions: BindingQueueOptions, prepareHandlerStrategies: PrepareHandlerStrategies);
setupChannel(channel: ConfirmChannel): Promise<void>;
/**
* Listen for an event and consume its message payload
*
* @param handlerWrapper - event handler wrapper
* @param onMessage - a callback that receives an event message
*/
consume(handlerWrapper: IHandlerWrapper, onMessage: (message: ConsumeMessage | null) => void): Promise<void>;
extractBindingPattern(mappedEvent: IEventWrapper): string;
configureAutoAck(wrapper: IHandlerWrapper): void;
addHandleCatch(handlerWrapper: IHandlerWrapper): void;
ack(message: Message): void;
nack(message: Message): void;
publish(exchange: string, routingKey: string, content: Buffer | string | unknown, options?: PublishOptions): Promise<void>;
configureRetryInfrastructure(wrappers: IHandlerWrapper[]): Promise<void>;
/**
* Queue that should be listened for events.
*/
protected queue(handlerWrapper: IHandlerWrapper): string;
protected bindingOptions(extra?: BindingQueueOptions): BindingQueueOptions;
protected consumerConfiguration(): BindingQueueOptions;
private bindEvents;
}