ezbatch
v1.0.0
Published
Easily manage and process large batches of data with Ezbatch, a TypeScript library designed for efficiently processing batches at a given interval.
Readme
MicroBatcher
A lightweight TypeScript library for batching jobs and processing them at configurable intervals. Designed for use cases where you want to collect jobs and process them in groups, improving efficiency and throughput.
Features
- Generic batching for any job type
- Configurable batch size and interval
- Pluggable batch processor interface
- Minimal, clean API
Installation
npm install micro-batcherUsage
1. Implement the BatchProcessor Interface
Create a class or object that implements the BatchProcessor<T> interface:
import { BatchProcessor } from './src/interfaces/batch-processor';
class MyBatchProcessor implements BatchProcessor<string> {
async execute(batch: string[]): Promise<void> {
// Process the batch
console.log('Processing batch:', batch);
}
}2. Create a MicroBatcher Instance
import { MicroBatcher } from './src/micro-batcher';
const processor = new MyBatchProcessor();
const batcher = new MicroBatcher<string>(processor, 1000, 5); // 1s interval, 5 jobs per batch3. Add Jobs
batcher.addJob('job1');
batcher.addJob('job2');
// ...Jobs will be processed in batches of 5, every 1 second.
4. Monitor Queue Size (Optional)
console.log(batcher.getQueueSize());API
MicroBatcher
constructor(batchProcessor: BatchProcessor<T>, batchInterval?: number, jobQuantity?: number)batchProcessor: Your implementation of the batch processorbatchInterval: Time in milliseconds between batch processing (default: 500)jobQuantity: Number of jobs per batch (default: 10)
addJob(job: T): Add a job to the queue
BatchProcessor
execute(batch: T[]): Promise<void>: Called with each batch of jobs
Example
class NumberBatchProcessor implements BatchProcessor<number> {
async execute(batch: number[]): Promise<void> {
console.log('Batch:', batch);
}
}
const batcher = new MicroBatcher<number>(new NumberBatchProcessor(), 2000, 3);
batcher.addJob(1);
batcher.addJob(2);
batcher.addJob(3);
// After 2 seconds, [1,2,3] will be processedLicense
MIT
