A simple, reliable, and efficient distributed task queue library for Go, backed by Redis.
Asynq is a Go library for queueing tasks and processing them asynchronously with workers. It uses Redis as a backing store to distribute work across multiple machines, providing a scalable and reliable solution for background job processing. The library is designed to be easy to start with while supporting features like task scheduling, retries, priority queues, and high availability.
Go developers building applications that require reliable background job processing, such as web services handling email delivery, image processing, or other asynchronous tasks. It is particularly suited for teams needing a distributed task queue that integrates seamlessly with Redis and offers operational tooling.
Developers choose Asynq for its simplicity, reliability, and comprehensive feature set out of the box, including guaranteed task execution, flexible scheduling, and built-in monitoring tools like a Web UI and CLI. Its use of Redis for storage ensures low latency and horizontal scalability, making it a robust alternative to more complex message brokers.
Simple, reliable, and efficient distributed task queue in Go
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Ensures at least one execution per task with automatic retries and crash recovery, preventing data loss in distributed systems as highlighted in the README's feature list.
Includes a Web UI and CLI for real-time queue inspection, task management, and metrics visualization, reducing the need for external operational tooling.
Supports delayed, periodic, and priority-based task processing with configurable queues, allowing fine-tuned control over job execution order and timing.
Leverages Redis for low-latency writes and horizontal scaling across multiple worker machines, with Sentinel support for high availability.
As a v0.x.x library, the public API is subject to breaking changes without major version updates, which can disrupt production codebases.
Some Lua scripts may not work with Redis Cluster, as noted in the README, restricting deployment options in clustered environments.
Tightly couples to Redis and Go, adding operational complexity for teams unfamiliar with Redis or those in polyglot ecosystems.