https://github.com/sshivananda/ts-sqs-consumer
Typescript based sqs consumer
https://github.com/sshivananda/ts-sqs-consumer
polling sqs-consumer ts-sqs-consumer
Last synced: 12 months ago
JSON representation
Typescript based sqs consumer
- Host: GitHub
- URL: https://github.com/sshivananda/ts-sqs-consumer
- Owner: sshivananda
- License: mit
- Created: 2020-04-17T13:58:54.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-06T09:46:34.000Z (almost 2 years ago)
- Last Synced: 2024-09-28T13:16:14.444Z (almost 2 years ago)
- Topics: polling, sqs-consumer, ts-sqs-consumer
- Language: TypeScript
- Size: 602 KB
- Stars: 3
- Watchers: 2
- Forks: 2
- Open Issues: 74
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# ts-sqs-consumer
Typescript based sqs consumer. Handles message transport and deletion from
SQS: just add a handler function for the messages from SQS to get started.
Integrated with localstack, codeClimate, fossa.
Build Stats:


[](https://github.com/sshivananda/ts-sqs-consumer/issues)
Maintainability stats:


[](https://github.com/sshivananda/ts-sqs-consumer/issues)
Publish stats:



[](https://app.fossa.io/projects/git%2Bgithub.com%2Fsshivananda%2Fts-sqs-consumer?ref=badge_shield)
Dependencies:


## Table Of Contents
- [Background](#background)
- [Installation](#installation)
- [Usage](#usage)
- [License](#license)
## Background
`ts-sqs-consumer` allows you to start processing messages from SQS by just
passing in the connection configuration options and defining what needs to
be done as part of the job processing.
- Establishes a connection to the sqs queue
- [Longpolls](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html)
for messages
- If messages are found: processes them using the processor function used
- If the message processing is successful: the message is deleted from the queue
The library has a heavy emphasis on code quality and is integrated with
the following tools:
- Integrated with [local stack](https://localstack.cloud/) to run integration tests.
This ensures that the library is tested as it would be expected to be used in a
live environment.
- [Code Climate](https://codeclimate.com/github/sshivananda/ts-sqs-consumer/): for
code quality and maintainability
- [FOSSA](https://app.fossa.io/projects/git%2Bgithub.com%2Fsshivananda%2Fts-sqs-consumer) -
for license check. Verfies that dependencies used in this library
do not go beyond the license that this library adheres to. A detailed link
is available in the [License](##License) section of the document.
- Whitesource to scan for security vulnerabilities. Note that this does not
currently cause build failures: but does get reported as an open issue.
## Installation
```bash
npm install ts-sqs-consumer
```
## Usage
```ts
import { SQSConsumer } from 'ts-sqs-consumer';
// Define a datatype for the message being consumed
type TestMessageType = {
orderId: string;
handle: string;
};
const tsSQSConsumer: SQSConsumer = new SQSConsumer({
// Provide the connection options
sqsOptions: {
clientOptions: {
region: 'us-east-1',
},
receiveMessageOptions: {
queueUrl: 'url-of-your-queue',
visibilityTimeout: 1800,
waitTimeSeconds: 20,
maxNumberOfMessages: 1,
stopAtFirstError: false,
},
},
// Define what needs to be done with each message
jobProcessor: (async (message: TestMessageType) => {
console.log('Got message');
console.log(message);
// other processing steps
}),
});
// Start processing messages
await tsSQSConsumer
.processPendingJobs()
.catch((err: Error): void => {
throw err;
});
```
## License
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fsshivananda%2Fts-sqs-consumer?ref=badge_large)