@message-queue-toolkit/sqs
Version:
SQS adapter for message-queue-toolkit
64 lines (63 loc) • 5.07 kB
TypeScript
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 {};