CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.0.0] - 2025-12-04

### Added

- Initial release of BullMQ for Elixir
- Core queue functionality (`BullMQ.Queue`)
  - Add jobs with `add/3` and `add_bulk/3`
  - Pause and resume queues
  - Get job by ID
  - Drain and obliterate queues
- Worker implementation (`BullMQ.Worker`)
  - Configurable concurrency
  - Automatic lock renewal
  - Graceful shutdown
  - Rate limiting support
- Job features (`BullMQ.Job`)
  - Priority queues
  - Delayed jobs
  - Automatic retries with backoff
  - Progress tracking
  - Custom job IDs
- Backoff strategies (`BullMQ.Backoff`)
  - Fixed backoff
  - Exponential backoff
  - Custom backoff functions
  - Jitter support
- Rate limiting (`BullMQ.RateLimiter`)
  - Queue-level rate limits
  - Group-based rate limits
  - Manual rate limit triggering
- Job scheduling (`BullMQ.JobScheduler`)
  - Cron-based scheduling
  - Interval-based scheduling
  - Scheduler management (upsert, remove, list)
- Flow producer (`BullMQ.FlowProducer`)
  - Parent-child job dependencies
  - Nested flows
  - Bulk flow creation
- Stalled job detection (`BullMQ.StalledChecker`)
  - Automatic recovery
  - Configurable stall limits
- Event streaming (`BullMQ.QueueEvents`)
  - Real-time job lifecycle events
  - Event filtering
- Telemetry integration (`BullMQ.Telemetry`)
  - Job lifecycle events
  - Worker events
  - Rate limit events
  - Span-based tracing
- Configuration validation (`BullMQ.Config`)
  - NimbleOptions-based schemas
  - Queue, worker, and connection validation
- Redis key management (`BullMQ.Keys`)
  - Consistent key naming
  - Configurable prefix
- Lua script execution (`BullMQ.Scripts`)
  - Atomic operations
  - SHA caching
  - Fallback to EVAL
- Redis connection pooling (`BullMQ.RedisConnection`)
  - NimblePool-based pooling
  - Configurable pool size
- Comprehensive documentation
  - Getting started guide
  - Job options reference
  - Worker configuration
  - Rate limiting guide
  - Flow patterns
  - Telemetry setup
- Test suite
  - Unit tests for all modules
  - Integration tests (requires Redis)

### Compatibility

- Compatible with Node.js BullMQ v5.x
- Requires Elixir 1.15+
- Requires Erlang/OTP 26+
- Requires Redis 6.0+