This module allows consuming SQS messages using @fgiova/mini-sqs-client thorough the aws-json protocol with "undici" as http agent .
The @fgiova/aws-signature module is used for signing requests to optimize performance.
npm install @fgiova/sqs-consumer
import {SQSConsumer} from '@fgiova/sqs-consumer'
const consumer = new SQSConsumer({
queueARN: "arn:aws:sqs:eu-central-1:000000000000:test-queue-hooks",
handler: async (message) => {
console.log(message.Body);
}
});
Option | Type | Default | Description |
---|---|---|---|
queueARN | string | The ARN of the queue to consume | |
handler | (message: Message) => Promise | The handler function to be called for each message | |
logger | Logger | console | The logger to be used |
autoStart | boolean | true | Whether to start the consumer automatically |
handlerOptions | HandlerOptions | The options for the handler | |
clientOptions | ClientOptions | The options for the client | |
consumerOptions | ConsumerOptions | The options for the consumer | |
hooks | Hooks | The hooks to be called on specific events |
Option | Type | Default | Description |
---|---|---|---|
deleteMessage | boolean | true | Whether to delete the message after handling (if handler execute without any error) |
extendVisibility | boolean | true | Whether to extend the visibility timeout during message handling |
excuteTimeout | number | 30000 | The timeout for the handler execution in ms |
parallelExecution | boolean | true | If true execute handler in parallel for each batch of messages received, otherwise execute consecutively |
Option | Type | Default | Description |
---|---|---|---|
sqsClient | MiniSQSClient | The MiniSQSClient client to be used. If not provided, a new client will be created using the queueARN. | |
endpoint | string | The endpoint to be used for the client. If not provided, the endpoint will be inferred from the queueARN. | |
undiciOptions | Pool.Options | The options for the undici client. | |
signer | Signer / SignerOptions | The signer to be used for signing requests. If not provided, a new singleton signer will be created. | |
destroySigner | boolean | false | Whether to destroy the signer when the consumer is destroyed. |
Option | Type | Default | Description |
---|---|---|---|
visibilityTimeout | number | 30 | The visibility timeout for the messages in seconds |
waitTimeSeconds | number | 20 | The wait time for the receiveMessage call in seconds |
itemsPerRequest | number | 10 | The maximum number of messages to be received at once |
messageAttributeNames | string[] | [] | The message attribute names to be included in the response |
Option | Type | Description |
---|---|---|
onPoll | (messages: Message[]) => Promise<Message[]> | Called when the consumer polls for messages |
onMessage | (message: Message) => Promise | Called when the consumer receives a message |
onHandle | (message: Message) => Promise | Called when the consumer handles a message |
onHandlerSuccess | (message: Message) => Promise | Called when the consumer handles a message successfully |
onHandlerTimeout | (message: Message) => Promise | Called when the consumer handler execution exceed executionTimeout |
onHandlerError | (message: Message, error: Error) => Promise | Called when the consumer handler execution throws an error |
onSuccess | (message: Message) => Promise | Called when the consumer handler execution finishes successfully |
onError | ( hook: HookName, message: Message, error: Error) => Promise | Called when the consumer handler execution throws an uncaught error |
onSQSError | (error: Error, message?: Message) => Promise | Called when the consumer receives an error from the SQS service |
SQSConsumer(options: SQSConsumerOptions)
SQSConsumer.start(): Promise<void>
SQSConsumer.stop(destroyConsumer = false): Promise<void>
SQSConsumer.addHook(hookname: string, func: Function): void
Licensed under MIT.