项目作者: sshivananda

项目描述 :
Typescript based sqs consumer
高级语言: TypeScript
项目地址: git://github.com/sshivananda/ts-sqs-consumer.git
创建时间: 2020-04-17T13:58:54Z
项目社区:https://github.com/sshivananda/ts-sqs-consumer

开源协议:MIT License

下载


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.

  • 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

  1. npm install ts-sqs-consumer

Usage

  1. import { SQSConsumer } from 'ts-sqs-consumer';
  2. // Define a datatype for the message being consumed
  3. type TestMessageType = {
  4. orderId: string;
  5. handle: string;
  6. };
  7. const tsSQSConsumer: SQSConsumer<TestMessageType> = new SQSConsumer({
  8. // Provide the connection options
  9. sqsOptions: {
  10. clientOptions: {
  11. region: 'us-east-1',
  12. },
  13. receiveMessageOptions: {
  14. queueUrl: 'url-of-your-queue',
  15. visibilityTimeout: 1800,
  16. waitTimeSeconds: 20,
  17. maxNumberOfMessages: 1,
  18. stopAtFirstError: false,
  19. },
  20. },
  21. // Define what needs to be done with each message
  22. jobProcessor: (async (message: TestMessageType) => {
  23. console.log('Got message');
  24. console.log(message);
  25. // other processing steps
  26. }),
  27. });
  28. // Start processing messages
  29. await tsSQSConsumer
  30. .processPendingJobs()
  31. .catch((err: Error): void => {
  32. throw err;
  33. });

License

FOSSA Status