Aide-De-Camp
💂 Aide-De-Camp
Aide-De-Camp is a backend agnostic delayed job queue. Very similar to [`girl_friday`](https://github.com/mperham/girl_friday) from the Ruby world.
Notable features:
- **Asynchronous**. Built from the ground-up using async/await for maximum concurrency.
- **Backend agnostic**[^1]. This crate won't force you to run any additional software you don't want to.
- **Flexible scheduling**. Schedule your job to run right now, in time relative to now or at a specific future time.
- **Binary Payloads**. Job payloads serialized with bincode for maximum speed and space efficiency.
- **Concurrency limits.** Specify desired concurrency for each runner.
- **Job Router**. Run as many job types as you want and limit which runners can process which jobs.
- **Cross Platform**. Runs anywhere rust has standard lib.
- **Traced**. All important functions are [instrumented](https://github.com/tokio-rs/tracing).
## Getting started
### Install
Pick a backend[^1] that suits you and add following to your `Cargo.toml`:
```toml
# Cargo.toml
[dependencies]
aide-de-camp = "0.1.0"
aide-de-camp-sqlite = "0.1.0" # Or any other avaiable backend
```
### Usage
`aide-de-camp-sqlite` has pretty detailed example of how to use this crate.
## Components
- **core**. Traits and error types meant to be used by aide-de-camp ecosystem.
- **runner**. Optional module (`runner` feature enabled by default) that contains default implementations of runner, job router and types required for their work.
[^1]: Currently, only SQLite supported (`aide-de-camp-sqlite`), but PostgreSQL backend is coming soon!
## License
Licensed under either of
- Apache License, Version 2.0
([LICENSE-APACHE](https://github.com/ZeroAssumptions/aide-de-camp/blob/main/LICENSE-APACHE) or )
- MIT license
([LICENSE-MIT](https://github.com/ZeroAssumptions/aide-de-camp/blob/main/LICENSE-MIT) or )
at your option.
## Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.