SQS consumer using undici
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 .