# lambda-dlq-retry

> Lambda handler to replay message from an SQS DLQ

Latest version **1.2.0** (published 2019-08-26) · MIT license · 0 weekly downloads

## Install

```sh
npm install lambda-dlq-retry
pnpm add lambda-dlq-retry
yarn add lambda-dlq-retry
bun add lambda-dlq-retry
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.0 |
| Published | 2019-08-26 |
| First published | 2019-08-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 6.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Eoin Shanaghy |
| Maintainers | eoinsha |
| Keywords | aws, lambda, dlq |

## Links

- npm: https://www.npmjs.com/package/lambda-dlq-retry
- Repository: https://github.com/eoinsha/lambda-dlq-retry
- Homepage: https://github.com/eoinsha/lambda-dlq-retry#readme
- Issues: https://github.com/eoinsha/lambda-dlq-retry/issues
- npm.io page: https://npm.io/package/lambda-dlq-retry

## Dependencies (1)

- [once](https://npm.io/package/once.md) ^1.4.0

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 1.2.0 (latest) — 2019-08-26
- 1.1.1 — 2019-08-14
- 1.0.0 — 2019-08-14

## README

# lambda-dlq-retry

[![license](https://img.shields.io/npm/l/lambda-dlq-retry.svg)](./LICENSE)

This module providedes the functionality for you to build a Lambda function that retries messages from a Dead Letter Queue (DLQ) for another Lambda. It pulls messages from the SQS DLQ (up to 10 at a time) and passes them back to the original Lambda function in sequence.

`lambda-dlq-retry` allows you to inspect messages in the DLQ and manually trigger a retry by invoking a retry Lambda.


## Usage

To use `lambda-dlq-retry`, you define a retry Lambda function which passes the event to `lambda-dlq-retry`. You just need to set the `DLQ_QUEUE_NAME` and pass the original handler function. Your deployment should

```
npm install --save lambda-dlq-retry
```

Add a `dlq-handler.js`:

```javascript
const lambdaDlqRetry = require('lambda-dlq-retry')
const handler = require('./handler')

module.exports = {
  retry: lambdaDlqRetry({ handler: handler.original })
}
```

If you are using the Serverless Framework, the following is an example of the `serverless.yml` configuration. It creates the SQS queue and sets it as the Dead Letter Queue for the Lambda function. This example has all the relevant Serverless Framework configuration to do that.

```yaml
functions:
  original:
    handler: handler.original
    onError: !GetAtt dlq.Arn
  retryDlq:
    handler: dlq-handler.retry
    environment:
      DLQ_QUEUE_NAME: ${self:custom.dlqQueueName}

resources:
  Resources:
    dlq:
      Type: AWS::SQS::Queue
      Properties:
        QueueName: ${self:provider.stage}-my-dlq
        MessageRetentionPeriod: 86400 # 1 day
```

## Configuration

Environment variables:

- `DLQ_QUEUE_NAME`: Required. The name of the queue where failed messages have been sent.
- `DLQ_RETRY_MAX_MESSAGES`: The maximum number of messages to retrieve and process for a single 'retry' invocation. The default is 10.

You can also pass a logger to `lambda-dlq-retry` to get debug-level logs on execution. By default, the `console` object is used.

```javascript
  retry: lambdaDlqRetry({ handler: handler.original, log: customLogger })
```

## LICENSE

[MIT](./LICENSE)

---
_Source: https://npm.io/package/lambda-dlq-retry · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
