@cumulus/ingest
Version:
Ingest utilities
43 lines • 1.56 kB
TypeScript
import { SQSMessage } from '@cumulus/aws-client/SQS';
export declare type MessageConsumerFunction = (queueUrl: string, message: SQSMessage) => Promise<void>;
/**
* Configuration parameters for the rate-limited consumer.
*/
export interface ConsumerConstructorParams {
/**
* URLs of the SQS queues to poll.
*/
queueUrls: string[];
/**
* Function that returns the remaining time in milliseconds before Lambda timeout.
*/
timeRemainingFunc: () => number;
/**
* The visibility timeout in milliseconds used when fetching messages from the SQS queues.
*/
visibilityTimeout: number;
/**
* Whether to delete messages after successful processing. Defaults to true.
*/
deleteProcessedMessage?: boolean;
/**
* Maximum number of messages to process per second.
*/
rateLimitPerSecond: number;
}
export declare class ConsumerRateLimited {
private readonly deleteProcessedMessage;
private readonly queueUrls;
private readonly timeRemainingFunc;
private readonly visibilityTimeout;
private readonly rateLimitPerSecond;
private readonly messageLimitPerFetch;
private readonly waitTime;
constructor({ queueUrls, timeRemainingFunc, visibilityTimeout, rateLimitPerSecond, deleteProcessedMessage, }: ConsumerConstructorParams);
private processMessage;
private processMessages;
private fetchMessages;
private fetchMessagesFromAllQueues;
consume(fn: MessageConsumerFunction): Promise<number>;
}
//# sourceMappingURL=consumerRateLimited.d.ts.map