BullRS
BullRS is a BullMQ compatible message queue for highly reliable job processing.
BullRS uses Redis to manage jobs in a highly reliable and scalable manner.
Distribute jobs across workers, with retrials, result values, inspecting logs per job and much more.
It's a great choice for distributed, event driven systems with fallible units of work.
BullRS is async and builds on the tokio runtime.
Priorities:
-
- Reliability - everything should work exactly as expected and no job should ever be lost
-
- Ease of use - beginner friendly, sensible defaults and hard to misuse API
-
- Performance - reduce round trips, maximize concurrence
The documentation is hosted on docs.rs/bullrs.
Example
A queue that squares f32 values. The producer and worker share the same queue instance
here. In production they often run in separate processes.
use ;
use ;
use ;
// Output needs Debug + Clone in addition to the serde traits.
async
Features (WIP)
BullMQ has many features. The list below keeps track, which of them are imeplemented in BullRS:
- Managing Jobs
- Adding immediate Jobs, LIFO and FIFO
- Awaiting Job Results
- Remove Jobs
- Adding delayed Jobs
- Adding priority Jobs
- Repeatable Jobs
- Job Hiearchy
- Worker
- Dequeue immediate Jobs
- Requeue stalled jobs (e.g. worker went offline during processing)
- Retry jobs with backoff
- Repeatable Jobs
- Job Hiearchy
- Queue
- Pause / unpause entire queue
- Obliterate queue