UNPKG

@message-queue-toolkit/amqp

Version:
33 lines (32 loc) 3.5 kB
import type { Either } from '@lokalise/node-core'; import type { BarrierResult, MessageSchemaContainer, PreHandlingOutputs, Prehandler, QueueConsumer, QueueConsumerOptions } from '@message-queue-toolkit/core'; import type { ChannelModel, Message } from 'amqplib'; import type { AMQPConsumerDependencies, AMQPQueueCreationConfig, AMQPQueueLocator } from './AbstractAmqpService.ts'; import { AbstractAmqpService } from './AbstractAmqpService.ts'; export type AMQPConsumerOptions<MessagePayloadType extends object, ExecutionContext = undefined, PrehandlerOutput = undefined, CreationConfig extends AMQPQueueCreationConfig = AMQPQueueCreationConfig, LocatorConfig extends AMQPQueueLocator = AMQPQueueLocator> = QueueConsumerOptions<CreationConfig, LocatorConfig, NonNullable<unknown>, // DeadLetterQueueIntegrationOptions -> empty object for now MessagePayloadType, ExecutionContext, PrehandlerOutput>; export declare abstract class AbstractAmqpConsumer<MessagePayloadType extends object, ExecutionContext, PrehandlerOutput = undefined, CreationConfig extends AMQPQueueCreationConfig = AMQPQueueCreationConfig, LocatorConfig extends AMQPQueueLocator = AMQPQueueLocator> extends AbstractAmqpService<MessagePayloadType, AMQPConsumerDependencies, ExecutionContext, PrehandlerOutput, CreationConfig, LocatorConfig> implements QueueConsumer { private readonly transactionObservabilityManager?; private readonly errorResolver; private readonly executionContext; private readonly deadLetterQueueOptions?; private readonly maxRetryDuration; readonly _messageSchemaContainer: MessageSchemaContainer<MessagePayloadType>; private readonly handlerContainer; protected readonly queueName: string; constructor(dependencies: AMQPConsumerDependencies, options: AMQPConsumerOptions<MessagePayloadType, ExecutionContext, PrehandlerOutput, CreationConfig, LocatorConfig>, executionContext: ExecutionContext); start(): Promise<void>; init(): Promise<void>; receiveNewConnection(connection: ChannelModel): Promise<void>; private consume; private internalProcessMessage; protected processMessage(message: MessagePayloadType, messageType: string, preHandlingOutputs: PreHandlingOutputs<PrehandlerOutput, any>): Promise<Either<'retryLater', 'success'>>; protected processPrehandlers(message: MessagePayloadType, messageType: string): Promise<PrehandlerOutput>; protected preHandlerBarrier<BarrierOutput>(message: MessagePayloadType, messageType: string, preHandlerOutput: PrehandlerOutput): Promise<BarrierResult<BarrierOutput>>; protected resolveSchema(message: MessagePayloadType): Either<Error, import("zod").ZodType<MessagePayloadType, import("zod").ZodTypeDef, MessagePayloadType>>; protected resolveMessageLog(message: MessagePayloadType, messageType: string): unknown; protected resolveNextFunction(preHandlers: Prehandler<MessagePayloadType, ExecutionContext, unknown>[], message: MessagePayloadType, index: number, preHandlerOutput: PrehandlerOutput, resolve: (value: PrehandlerOutput | PromiseLike<PrehandlerOutput>) => void, reject: (err: Error) => void): (preHandlerResult: import("@message-queue-toolkit/core").PrehandlerResult) => void; private deserializeMessage; private tryToExtractId; protected resolveMessage(message: Message): Either<import("@message-queue-toolkit/core").MessageInvalidFormatError | import("@message-queue-toolkit/core").MessageValidationError, import("@message-queue-toolkit/core").ResolvedMessage>; }