kojin
Async distributed task queue for Rust — the equivalent of Celery / Dramatiq (Python), BullMQ (Node.js), Sidekiq (Ruby), and Machinery (Go).
Features
- Async-first — built on Tokio, designed for
async/awaitfrom the ground up #[kojin::task]— proc-macro to define tasks from plain async functions- Pluggable broker — trait-based broker abstraction (Redis included, bring your own)
- Middleware — composable pre/post-execution hooks (tracing, metrics, custom)
- Graceful shutdown — cooperative cancellation via
CancellationToken - Weighted queues — prioritize work across multiple queues
- Configurable retries — per-task retry limits with backoff strategies
Quick Start
Add to your Cargo.toml:
[]
= "0.1"
= { = "1", = ["full"] }
= { = "1", = ["derive"] }
= "0.1"
Define a task, enqueue it, and run a worker:
use async_trait;
use ;
use ;
async
Crate Architecture
| Crate | Description |
|---|---|
kojin |
Facade crate — re-exports everything, provides KojinBuilder |
kojin-core |
Core traits (Task, Broker, Middleware), worker runtime, types |
kojin-macros |
#[kojin::task] proc-macro |
kojin-redis |
Redis broker backend via deadpool-redis |
License
Licensed under either of Apache License, Version 2.0 or MIT License at your option.