A simple background job processing library for Elixir that uses Mnesia for persistence without external dependencies.
Que is a background job processing library for Elixir applications that uses Mnesia for job persistence. It provides a simple way to queue and process jobs asynchronously without requiring external services like Redis, making it easy to set up and integrate into Elixir projects.
Elixir developers who need reliable background job processing without the complexity of external dependencies, particularly those working on smaller to medium-sized applications.
Developers choose Que for its simplicity and self-contained design—it leverages Erlang/OTP's built-in Mnesia database, eliminating external service dependencies while offering familiar job processing patterns and lifecycle callbacks.
Simple Job Processing in Elixir with Mnesia :zap:
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Mnesia, Erlang's built-in database, eliminating the need for Redis or other services, which simplifies deployment and reduces infrastructure overhead.
Workers support pattern matching and guard clauses for job arguments, allowing intuitive handling of complex data structures, as shown in the NotificationSender example.
Allows customizing how many jobs each worker processes simultaneously via the concurrency option, such as setting it to 4 for the SignupMailer worker.
Provides on_success, on_failure, on_setup, and on_teardown hooks for monitoring and side effects, demonstrated in the ReportBuilder and VideoProcessor examples.
Lacks delayed jobs, job cancellation, priority support, and automatic retry strategies, as indicated in the project roadmap, limiting its use for production-grade workflows.
Running in a multi-node environment with recovery from node failures is still on the roadmap, making it unsuitable for distributed or high-availability applications.
Persisting jobs to disk requires Mnesia configuration and running a mix task, which can be cumbersome in production environments without Mix, as noted in the setup documentation.