Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. Asynq

Asynq

MITGov0.26.0

A simple, reliable, and efficient distributed task queue library for Go, backed by Redis.

GitHubGitHub
13.8k stars991 forks0 contributors

What is Asynq?

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.

Target Audience

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.

Value Proposition

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.

Overview

Simple, reliable, and efficient distributed task queue in Go

Use Cases

Best For

  • Building scalable microservices that require asynchronous task processing with guaranteed execution.
  • Implementing scheduled or delayed tasks, such as sending reminder emails or processing batch jobs at specific times.
  • Handling high-priority job queues with weighted or strict priority management for critical workflows.
  • Ensuring task deduplication to prevent duplicate execution in distributed systems.
  • Monitoring and managing task queues via a built-in Web UI and CLI for operational visibility.
  • Integrating with Prometheus for observability and metrics collection in cloud-native Go applications.

Not Ideal For

  • Polyglot microservices architectures where tasks need to be enqueued or processed in non-Go languages, as Asynq is Go-specific.
  • Environments mandating exactly-once delivery semantics, since Asynq guarantees at-least-once execution which can lead to duplicates.
  • Deployments relying heavily on Redis Cluster, as some Lua scripts may not be compatible, limiting scalability options.
  • Teams seeking a managed, cloud-native queue service without infrastructure overhead, as Asynq requires self-hosted Redis and operational maintenance.

Pros & Cons

Pros

Guaranteed Task Execution

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.

Built-in Monitoring Tools

Includes a Web UI and CLI for real-time queue inspection, task management, and metrics visualization, reducing the need for external operational tooling.

Flexible Scheduling and Priorities

Supports delayed, periodic, and priority-based task processing with configurable queues, allowing fine-tuned control over job execution order and timing.

Redis-backed Scalability

Leverages Redis for low-latency writes and horizontal scaling across multiple worker machines, with Sentinel support for high availability.

Cons

Pre-1.0 API Instability

As a v0.x.x library, the public API is subject to breaking changes without major version updates, which can disrupt production codebases.

Redis Cluster Incompatibility

Some Lua scripts may not work with Redis Cluster, as noted in the README, restricting deployment options in clustered environments.

Infrastructure Dependency

Tightly couples to Redis and Go, adding operational complexity for teams unfamiliar with Redis or those in polyglot ecosystems.

Frequently Asked Questions

Quick Stats

Stars13,784
Forks991
Contributors0
Open Issues219
Last commit3 days ago
CreatedSince 2019

Tags

#task-queue#redis#message-queue#high-availability#job-scheduling#go-library#worker-pool#asynchronous-processing#monitoring#background-jobs#golang#asynchronous-tasks#go

Built With

G
Go
R
Redis

Included in

Go169.1k
Auto-fetched 1 day ago

Related Projects

saramasarama

Sarama is a Go library for Apache Kafka.

Stars12,523
Forks1,876
Last commit2 days ago
CentrifugoCentrifugo

Scalable real-time messaging server in a language-agnostic way. Self-hosted alternative to Pubnub, Pusher, Ably, socket.io, Phoenix.PubSub, SignalR. Set up once and forever.

Stars10,900
Forks744
Last commit1 day ago
WatermillWatermill

Building event-driven applications the easy way in Go.

Stars9,924
Forks515
Last commit1 month ago
gorushgorush

A push notification server written in Go (Golang).

Stars8,793
Forks886
Last commit3 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub