aws-agenda
v1.0.0
Published
Light weight job scheduler for Node.js
Downloads
1
Maintainers
Readme
Aws-agenda offers
- Minimal overhead. Agenda aims to keep its code base small.
- DynamoDB backed persistence layer.
- Promises based API.
- Scheduling.
- Event backed job queue that you can hook into.
Feature Comparison
Since there are a few job queue solutions, here a table comparing them to help you use the one that better suits your needs.
Agenda is great if you need something that is simple and backed by MongoDB.
| Feature | Bull | Kue | Bee | Agenda | Agenda AWS | | :------------- |:-------------:|:-----:|:---:|:------:|:----------:| | Backend | redis | redis |redis| mongo | DynamoDB | | Priorities | ✓ | ✓ | | ✓ | | | Concurrency | ✓ | ✓ | ✓ | ✓ | | | Delayed jobs | ✓ | ✓ | | ✓ | ✓ | | Global events | ✓ | ✓ | | | | | Rate Limiter | ✓ | | | | | | Pause/Resume | ✓ | ✓ | | | | | Sandboxed worker| ✓ | | | | | | Repeatable jobs | ✓ | | | ✓ | | | Atomic ops | ✓ | | ✓ | | | | Persistence | ✓ | ✓ | ✓ | ✓ | ✓ | | UI | ✓ | ✓ | | ✓ | | | REST API | | | | ✓ | | | Optimized for | Jobs / Messages | Jobs | Messages | Jobs | Jobs |
Kudos for making the comparison chart goes to Bull maintainers.
Installation
Install via NPM
npm install aws-agenda
You will also need a working AWS account witg access to a dynamodb database.
Example Usage
const awsConfig = {
profile: awsProfile, // AWS profile object
region: awsRegion, // AWS region
scheduleTable: awsDynamoDbScheduleMeta // DynamoDB table where the jobs will be stored
}
const agenda = new Agenda(awsConfig);
await agenda.start()
// Define a job
await agenda.define('UniqueJobName', { concurrency: 1 }, job => {
// Do things
})
// Schedule a job
await agenda.schedule(date, `UniqueJobName`, {jobData})
Agenda Events
An instance of an agenda will emit the following events:
ready
- called when Agenda DynnamoDB connection is successfully opened and indices created. If you're passing agenda an existing connection, you shouldn't need to listen for this, asagenda.start()
will not resolve until indices have been created. If you're using thedb
options, or calldatabase
, then you may still need to listen for theready
event before saving jobs.agenda.start()
will still wait for the connection to be opened.error
- called when Agenda DynnamoDB connection process has thrown an error
await agenda.start();
Acknowledgements
- Agenda was originally created by @rschmukler.
- Agendash was originally created by @joeframbach.
- These days Agenda has a great community of contributors around it. Join us!
- This simplified port of agenda to aws is created by @gariasf