Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

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

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. opq

opq

Elixirv4.0.4

A simple, in-memory FIFO queue for Elixir with worker pooling and rate limiting.

Visit WebsiteGitHubGitHub
269 stars9 forks0 contributors

What is opq?

OPQ is an Elixir library that provides a simple, in-memory FIFO queue with built-in worker pooling and rate limiting. It solves the problem of managing background tasks and concurrent job processing in Elixir applications efficiently. The library leverages Erlang's queue module and Elixir's GenStage for reliable performance.

Target Audience

Elixir developers who need a lightweight, in-memory queue for background job processing, task management, or rate-limited operations in their applications.

Value Proposition

Developers choose OPQ for its simplicity, performance, and essential features like worker pooling and rate limiting without the overhead of more complex job processing systems. It integrates seamlessly with Elixir's concurrency model and supervision trees.

Overview

Elixir queue! A simple, in-memory queue with worker pooling and rate limiting in Elixir.

Use Cases

Best For

  • Processing background tasks in Elixir applications
  • Implementing rate-limited API calls or operations
  • Managing concurrent job processing with worker pools
  • Handling lightweight in-memory job queues
  • Integrating queue functionality into Elixir supervision trees
  • Building crawlers or scrapers with controlled request rates

Not Ideal For

  • Applications requiring persistent job storage across restarts
  • Distributed systems needing queue replication across multiple nodes
  • Projects needing advanced job features like priority queuing or automatic retries

Pros & Cons

Pros

Fast In-Memory Performance

Leverages Erlang's queue module for efficient FIFO operations, ensuring low-latency processing as emphasized in the README's focus on speed.

Simple Supervision Integration

Easily starts as part of Elixir supervision trees with minimal configuration, demonstrated in the usage examples for seamless application setup.

Flexible Worker Pooling

Supports configurable worker counts and custom worker modules, allowing tailored job processing as shown in the CustomWorker example.

Built-in Rate Limiting

Offers configurable intervals to control processing speed, useful for scenarios like rate-limited API calls, with bypass option when not needed.

Cons

No Persistence

Jobs are stored only in memory, so they are lost on application crashes or restarts, limiting reliability for critical workloads without external backups.

Single-Node Limitation

Designed for in-memory use on a single node, lacking built-in support for distributed queues or cluster synchronization, which restricts scalability.

Basic Error Handling

While timeouts are configurable, there's no inherent retry logic, dead-letter queues, or advanced error recovery mechanisms, requiring manual implementation.

Frequently Asked Questions

Quick Stats

Stars269
Forks9
Contributors0
Open Issues0
Last commit2 years ago
CreatedSince 2017

Tags

#back-pressure#task-processing#elixir#in-memory#queue#pooling#pool#worker-pool#background-jobs#rate-limiting#concurrency#rate-limit#genstage#fifo

Built With

E
Erlang
E
Elixir
G
GenStage

Links & Resources

Website

Included in

Elixir13.1k
Auto-fetched 10 hours ago

Related Projects

obanoban

💎 Robust job processing in Elixir, backed by modern PostgreSQL, SQLite3, and MySQL

Stars3,964
Forks368
Last commit16 hours ago
broadwaybroadway

Concurrent and multi-stage data ingestion and data processing with Elixir

Stars2,680
Forks179
Last commit1 month ago
exqexq

Job processing library for Elixir - compatible with Resque / Sidekiq

Stars1,531
Forks181
Last commit1 month ago
verkverk

A job processing system that just verks! 🧛‍

Stars729
Forks59
Last commit5 years 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