Skip to main content
BullMQ for Elixir is a full-featured job queue library that brings the power of BullMQ to the Elixir ecosystem. It’s built with OTP principles using GenServers and Supervisors, providing a native Elixir experience.

Overview

This is an Elixir port of the popular BullMQ library for Node.js, providing full compatibility with existing BullMQ queues across all languages (Node.js, Python, and PHP).

Key Features

  • High Performance - Built on Redis for speed and reliability
  • Automatic Retries - Configurable retry strategies with exponential backoff
  • Job Scheduling - Delay jobs or schedule them with cron expressions
  • Priority Queues - Process important jobs first
  • Rate Limiting - Control processing rates per queue or per group
  • Parent-Child Jobs - Create complex workflows with job dependencies
  • Real-time Events - Subscribe to job lifecycle events via Worker callbacks or QueueEvents
  • Reliable - Stalled job detection and automatic recovery
  • Observable - Built-in Telemetry integration for monitoring
  • OTP Native - Built with GenServers and Supervisors following Elixir best practices
  • Node.js Compatible - Jobs can be shared between Elixir and Node.js workers

Requirements

  • Elixir 1.15 or higher
  • Erlang/OTP 26 or higher
  • Redis 6.0 or higher

Architecture

BullMQ for Elixir follows OTP design principles:
  • Workers are GenServers that can be supervised
  • QueueEvents use Redis Streams for real-time event subscriptions
  • JobSchedulers manage repeatable/cron jobs
  • FlowProducer creates parent-child job dependencies
  • All components integrate with Elixir’s supervision trees

Version

Current version: 1.2.6

Compatibility

This library is fully compatible with the Node.js BullMQ library. Jobs can be added from Node.js and processed by Elixir workers, and vice versa. All implementations share the same Redis data structures and Lua scripts.

Use Cases

Elixir BullMQ is ideal for:
  • Background job processing (emails, notifications, data processing)
  • Distributed task execution across multiple nodes
  • Cron-based job scheduling
  • Building resilient job pipelines with parent-child dependencies
  • Hybrid systems with jobs produced/consumed across Node.js, Python, PHP, and Elixir

Installation

The library is available on Hex:
def deps do
  [
    {:bullmq, "~> 1.2"}
  ]
end

Next Steps

Installation

Get started with BullMQ for Elixir

Usage Guide

Learn how to add jobs, create workers, and more

Changelog

View release history and updates

HexDocs

Read the full API documentation

Build docs developers (and LLMs) love