Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@elastic.io/batching-library

Package Overview
Dependencies
Maintainers
12
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@elastic.io/batching-library

Library for batching implementation on elastic.io

  • 2.0.2-dev.2
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
12
Weekly downloads
 
Created
Source

CircleCI

batching-library

Library for batching in elastic.io. Batching allows users to combine several calls to API in one big call.

BatchClient

BatchClient represents client that works with batches. It contains logic for creating, updating statuses and storing batches.

Constructor

new BatchClient(store, config)

BatchClient constructor expects three parameters:

  1. store - implementation of IStore interface. For example MongoStore. This is where batches will be stored.
  2. config - instance of BatchConfig. It represent configuration and defines limitation for batches e.g: maxSize, maxItemsNumber.
Example
import { MongoStore, IStore } from '@elastic.io/batching-library';
import { BatchClient } from '@elastic.io/batching-library';
import { BatchConfig } from '@elastic.io/batching-library';
import { ConnectionOptions } from 'mongoose';

const maxSize = 1000;
const maxItemsNumber = 10;
const maxWaitTime = 1000;
const maxEmitRate = 1;
const maxRetry = 0;
const uri: string = 'url_to_mongo';
const collection = 'collection_name';
const connectionOpt: ConnectionOptions = {
  user: 'user',
  pass: 'password', 
};
const mgStore: IStore = new MongoStore(collection, uri, connectionOpt);
const config = new BatchConfig(maxSize, maxItemsNumber, maxWaitTime, maxEmitRate, maxRetry);
const client = new BatchClient(mgStore, config);

Methods

1. saveItem(item)

Save provided item to batch, returns batch with saved item (without another Batch items).

BatchItem properties
ParameterTypeRequiredDescription
idstringfalseIf not specified - uuid v1 will be generated
itemstringtrueBody of the Batch Item
Example
const batch: Batch = await client.saveItem({ id: 0, item: {}});
2. getReadyBatches()

Using provided emitter emit batches with status 'READY'

Example
const batches: Batch[] = await client.getReadyBatches();
  await Promise.all(batches.map(async (batch) => {
    try {
      
     // process batch implementation
      
      await client.updateBatchStatusById(batch.id, 'SUCCESS'); // batch was successfully processed
    } catch (e) {
      log.error('Error: %o', e);
      await client.updateBatchStatusById(batch.id, 'FAILED'); // batch processed with error
    }
  }));

Implementing your own batch storage

For reference implementation example take a look at MongoStore

  1. Extend AbstractStore and override each abstract method.
  2. Implementation must ensure that each operation is transactional

Environment variables

NameMandatoryDescriptionValues
LOG_OUTPUT_MODEYesLog record view formatshort long simple json bunyan
LOG_LEVELYesLog Levelfatal error warn info debug trace
MONGO_URLNoURL of mongo db used during integration testsurl to mongo db
MONGO_USERNoUsername of mongo db user, used during integration testsusername
MONGO_PASSWORDNoPassword for connecting to mongo db, used during integration testspassword
MONGO_DBNoDatabase of mongo db used during integration testsdatabase name
MONGO_DROP_DBNoIf 1 drop database each test integration test if 0 dont1 0

Environment template file

Limitations

MongoStore:

  1. Supported Mongo database versions: 4.0 and higher.

  2. Retries do not implemented.

  3. Emit rate not implemented.

  4. Library is not guarantee sequence processing of batch item

MaesterStore:

  1. Emit rate not implemented.

Keywords

FAQs

Package last updated on 10 Aug 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc