ts-sqs-consumer
v1.2.12
Published
Typescript based SQS consumer
Downloads
363
Maintainers
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:
Maintainability stats:
Publish stats:
Dependencies:
Table Of Contents
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 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 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: for code quality and maintainability
- FOSSA - 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 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
npm install ts-sqs-consumer
Usage
import { SQSConsumer } from 'ts-sqs-consumer';
// Define a datatype for the message being consumed
type TestMessageType = {
orderId: string;
handle: string;
};
const tsSQSConsumer: SQSConsumer<TestMessageType> = 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;
});