7.2.0 • Published 6 months ago
background-process-js v7.2.0
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