UNPKG

@goparrot/pubsub-event-bus

Version:
43 lines (42 loc) 2.23 kB
/// <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; }