sshivananda / ts-sqs-consumer

Typescript based sqs consumer
MIT License
3 stars 2 forks source link
polling sqs-consumer ts-sqs-consumer

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:

npm GitHub Workflow Status (branch) contributions welcome

Maintainability stats:

Code Climate maintainability Code Climate coverage GitHub issues

Publish stats:

npm GitHub tag (latest by date) GitHub FOSSA Status

Dependencies:

David - Dependencies David - Dev 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.

The library has a heavy emphasis on code quality and is integrated with the following tools:

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;
    });

License

FOSSA Status