@message-queue-toolkit/amqp
Version:
AMQP adapter for message-queue-toolkit
33 lines (32 loc) • 3.5 kB
TypeScript
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>;
}