A disk-backed, in-process task queue for Clojure that persists tasks to disk, surviving process restarts.
Durable Queue is a Clojure library that implements a disk-backed task queue, allowing tasks to persist across process restarts and scale with available disk space instead of memory. It solves the problem of reliable, in-process task processing without relying on external message brokers, making it ideal for applications needing durability with minimal complexity.
Clojure developers building applications that require reliable, persistent task queues, such as background job processors, event-driven systems, or data pipelines where process crashes must not lead to data loss.
Developers choose Durable Queue for its simplicity, embeddability, and pure Clojure implementation, which avoids the operational overhead of external brokers like Kafka while providing configurable durability and performance tuning options.
a disk-backed queue for clojure
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Tasks are stored on disk, ensuring they survive process crashes or restarts, as emphasized in the disk-backed design that scales with available disk space.
Runs entirely in-process, avoiding network complexity and external dependencies like Kafka, making it simpler to embed in Clojure applications.
Configurable options like :fsync-put? and :fsync-take? allow balancing throughput and durability, with benchmarks showing up to 100k tasks/sec on SSDs when disabled.
Provides detailed statistics such as :enqueued, :completed, and :in-progress counts, enabling real-time monitoring of queue state without extra tools.
Implemented purely in Clojure, it cannot be used in projects with other languages, restricting its adoption in polyglot or heterogeneous environments.
Enabling fsync for puts and takes drastically reduces throughput—from ~100k tasks/sec to as low as ~1.5k tasks/sec on rotating disks—as admitted in the documentation.
Dereferencing tasks can throw IOExceptions due to potential disk corruption, forcing developers to wrap code in try/catch blocks for robustness, adding complexity.
Durable Queue is an open-source alternative to the following products: