7.2.0 • Published 6 months ago

background-process-js v7.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

background-process-js

A set of util tools for create background process.

How to use?

You have two manners for use background-process-js, you can use some our implementations or you can create your own.

Using our implementation.

  import { SQSClient } from 'aws-sdk';
  import { SQSConsumer, SQSConfig, ConsumerConfig } from 'background-process-js';

  const sqs = new SQSClient();
  const sqsConfig = {
    client: sqs,
    WaitTimeSeconds: 20,
    VisibilityTimeout: 30,
    MaxNumberOfMessages: 10,
    mainQueueUrl: 'https://sqs.{region}.amazonaws.com/{accountID}/{queueName}'
    deadQueueUrl: 'https://sqs.{region}.amazonaws.com/{accountID}/{queueName}'
  };


  // If it is true will continuously polling in the queue,
  // and if the queue return less than MaxNumberOfMessages and greather than zero
  // will set a timeout with WaitTimeSeconds number for continuously polling queue.  
  
  // If it is false you must control the timeouts and times for polling.
  const continuouslyPolling = true || false;
                                              // Default false
  const consumer = new SQSConsumer(sqsConfig, continuouslyPolling);

Using your own implementation.

  import { Message } from 'aws-sdk';
  import { Consumer } from "background-process-js";

  export class SQSConsumer extends Consumer<Message> {
    
    constructor() {
      super({
        hasDeadQueue: true || false,
        maxReceivedMessages: 10,
        continuouslyPolling: true || false,
        timeoutAfterEndingPollingInMilliseconds: 20 * 1000, // 20 seconds
      });
    }

    protected async getMessages(): Promise<Message[]> {
      // code...
    }

    protected async deleteMessages(messages: Message[]): Promise<void> {
      // code...
    }

    protected async markAsDeadMessages(messages: Message[]): Promise<void> {
      // code...
    }
  }

For any implementation you can set the following listeners and methods.

  // This process event will be execute by default every 1 minute 
  consumer.process(({ messages, scalingId }) => {
    // code for processing message...

    const deadMessages = [...messages];
    const processedMessages = [...messages];

    if (isInvalidMessage) {
      // This emitter will be log an error and stop consumer
      consumer.catch(new Error());
    }

    // This emmiter will be delete message from queue
    consumer.finish(scalingId, processedMessages);

    // This emmiter will be send messages to dead queue
    consumer.dead(scalingId, deadMessages);
  });

  // This method will start many pollings
  consumer.poll(5);
7.0.0

6 months ago

7.2.0

6 months ago

7.0.2

6 months ago

7.1.0

6 months ago

7.0.1

6 months ago

6.3.2

7 months ago

6.3.1

7 months ago

6.3.4

7 months ago

6.3.3

7 months ago

6.1.0

10 months ago

6.3.0

10 months ago

6.2.0

10 months ago

6.0.3

12 months ago

6.0.4

12 months ago

6.0.1

12 months ago

6.0.0

12 months ago

6.0.2

12 months ago

5.0.2

12 months ago

5.0.1

12 months ago

5.0.0

12 months ago

3.0.1

12 months ago

4.0.0

12 months ago

3.0.0

12 months ago

2.0.3

1 year ago

2.0.2

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago