diff --git a/website/docs/middlewares/sqs-partial-batch-failure.md b/website/docs/middlewares/sqs-partial-batch-failure.md index 13459ebc3..75bb9aca5 100644 --- a/website/docs/middlewares/sqs-partial-batch-failure.md +++ b/website/docs/middlewares/sqs-partial-batch-failure.md @@ -20,6 +20,8 @@ npm install --save-dev @aws-sdk/client-sqs ## Sample usage +Standrad Queue (All records handled in parallel): + ```javascript import middy from '@middy/core' import sqsBatch from '@middy/sqs-partial-batch-failure' @@ -35,6 +37,28 @@ const lambdaHandler = (event, context) => { export const handler = middy().use(sqsBatch()).handler(lambdaHandler) ``` +FIFO Queue (Records handled sequentially): + +```javascript +import middy from '@middy/core' +import sqsBatch from '@middy/sqs-partial-batch-failure' + +const lambdaHandler = (event, context) => { + const statusPromises = []; + for (const [idx, record] of Object.entries(Records)) { + try { + /* Custom message processing logic */ + statusPromises.push(Promise.resolve()); + } catch (error) { + statusPromises.push(Promise.reject(error)); + } + } + return Promise.allSettled(statusPromises) +} + +export const handler = middy().use(sqsBatch()).handler(lambdaHandler) +``` + ## Important The value `ReportBatchItemFailures` must be added to your Lambda's `FunctionResponseTypes` in the `EventSourceMapping`. See [Reporting batch item failures](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#services-sqs-batchfailurereporting) and [Lambda EventSourceMapping](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html)