UNPKG

@message-queue-toolkit/sqs

Version:
64 lines (63 loc) 5.07 kB
import type { Either, ErrorResolver } from '@lokalise/node-core'; import { type BarrierResult, type MessageSchemaContainer, type PreHandlingOutputs, type Prehandler, type QueueConsumer, type QueueConsumerDependencies, type QueueConsumerOptions } from '@message-queue-toolkit/core'; import type { ConsumerOptions } from 'sqs-consumer/src/types'; import type { SQSMessage } from '../types/MessageTypes'; import type { SQSCreationConfig, SQSDependencies, SQSQueueLocatorType } from './AbstractSqsService'; import { AbstractSqsService } from './AbstractSqsService'; type SQSDeadLetterQueueOptions = { redrivePolicy: { maxReceiveCount: number; }; }; export type SQSConsumerDependencies = SQSDependencies & QueueConsumerDependencies; export type SQSConsumerOptions<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput, CreationConfigType extends SQSCreationConfig = SQSCreationConfig, QueueLocatorType extends object = SQSQueueLocatorType> = QueueConsumerOptions<CreationConfigType, QueueLocatorType, SQSDeadLetterQueueOptions, MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, SQSCreationConfig, SQSQueueLocatorType> & { /** * Omitting properties which will be set internally ins this class * `visibilityTimeout` is also omitted to avoid conflicts with queue config */ consumerOverrides?: Omit<ConsumerOptions, 'sqs' | 'queueUrl' | 'handler' | 'handleMessageBatch' | 'visibilityTimeout' | 'messageAttributeNames' | 'messageSystemAttributeNames' | 'attributeNames'>; concurrentConsumersAmount?: number; }; export declare abstract class AbstractSqsConsumer<MessagePayloadType extends object, ExecutionContext, PrehandlerOutput = undefined, CreationConfigType extends SQSCreationConfig = SQSCreationConfig, QueueLocatorType extends object = SQSQueueLocatorType, ConsumerOptionsType extends SQSConsumerOptions<MessagePayloadType, ExecutionContext, PrehandlerOutput, CreationConfigType, QueueLocatorType> = SQSConsumerOptions<MessagePayloadType, ExecutionContext, PrehandlerOutput, CreationConfigType, QueueLocatorType>> extends AbstractSqsService<MessagePayloadType, QueueLocatorType, CreationConfigType, ConsumerOptionsType, SQSConsumerDependencies, ExecutionContext, PrehandlerOutput> implements QueueConsumer { private consumers; private readonly concurrentConsumersAmount; private readonly transactionObservabilityManager?; private readonly consumerOptionsOverride; private readonly handlerContainer; private readonly deadLetterQueueOptions?; private readonly isDeduplicationEnabled; private maxRetryDuration; protected deadLetterQueueUrl?: string; protected readonly errorResolver: ErrorResolver; protected readonly executionContext: ExecutionContext; readonly _messageSchemaContainer: MessageSchemaContainer<MessagePayloadType>; protected constructor(dependencies: SQSConsumerDependencies, options: ConsumerOptionsType, executionContext: ExecutionContext); init(): Promise<void>; protected initDeadLetterQueue(): Promise<void>; start(): Promise<void>; close(abort?: boolean): Promise<void>; private createConsumer; private handleRetryLater; private stopExistingConsumers; 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 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; protected resolveMessageLog(message: MessagePayloadType, messageType: string): unknown; protected resolveMessage(message: SQSMessage): Either<import("@message-queue-toolkit/core").MessageInvalidFormatError | import("@message-queue-toolkit/core").MessageValidationError, import("@message-queue-toolkit/core").ResolvedMessage>; protected isDeduplicationEnabledForMessage(message: MessagePayloadType): boolean; protected resolveMaybeOffloadedPayloadMessage(message: SQSMessage): Promise<{ error?: never; result: import("@message-queue-toolkit/core").ResolvedMessage; } | { error: "abort"; result?: never; }>; private tryToExtractId; private deserializeMessage; private failProcessing; private getQueueVisibilityTimeout; } export {};