@momsfriendlydevco/throttle
v0.0.6
Published
@MomsFriendlyDevCo/throttle ======================= Async throttling mechanism based on MongoDB locking.
Downloads
4
Readme
@MomsFriendlyDevCo/throttle
Async throttling mechanism based on MongoDB locking.
var Throttle = require('@momsfriendlydevco/throttle');
var throttler = new Throttle();
throttler.init()
.then(()=> throttler.throttle(() => {
// Worker is complete when promise resolves
return Promise.resolve();
},
{
id: 'foo',
hash: ({foo: 'bar'}),
}
))
.catch(e => {
// The queue full of workers already in progress.
});
API
Throttle(settings)
Main constructor. Requires instance.init() to be called before the instance is functional.
Throttle.defaults
Default settings.
| Setting | Type | Default | Description |
|----------------------|----------|------------------------------------|-------------------------------------------------|
| leading
| boolean
| true
| Bypasses use of the queue |
| queue
| number
| 1 | Number of items for which to keep queued callbacks |
| lock
| object
| See below | Lock package configuration options |
| lock.expiry
| number
| 1 hour | The time in milliseconds until the lock expires |
| lock.ttl
| number
| 1 min | The time in milliseconds until keep-alive expires |
| lock.mongodb
| object
| See below | MongoDB connection options |
| lock.mongodb.uri
| string
| "mongodb://localhost/mfdc-cache"
| The MongoDB URI to connect to |
| lock.mongodb.collection
| string
| "locks"
| The name of the collection to use |
| lock.mongodb.options
| object
| See code | Additional connection options to use |
| lock.omitFields
| array
| ['_id', '__v']
| Which fields to autmatically skip when using get()
|
| lock.includeKeys
| boolean
| true
| Also save the key field values, reduces overhead to disable this |
throttler.init(settings)
Check all settings and connect to the database.
throttler.throttle(worker, options)
Callback worker
will be called immediately if a lock is available or otherwise throttled in a queue. When queue is full promise will be rejected with error "Throttle queue is full"
.
| Option | Type | Default | Description |
|----------------------|----------|------------------------------------|-------------------------------------------------|
| id
| mixed
| undefined | Key within lock collection |
| hash
| string
| undefined | An object which uniquely identies the object being locked |