# good_job v1.0.0 - Table of Contents A concurrent, Postgres-based job queue backend for Elixir. Fully compatible with original GoodJob and Rails ActiveJob. ## Pages - [README](readme.md) - [CHANGELOG](changelog.md) - [Ruby GoodJob Compatibility](compatibility.md) - [Contributing Guidelines](contributing.md) - [Project Governance](governance.md) - [LICENSE](license.md) - [Examples](examples.md) - [Migration Guide: good_job (Ruby) to good_job.ex (Elixir)](migration_from_ruby.md) - [SECURITY](security.md) - [Publishing Guide](publishing.md) - [GoodJob Standalone Usage (Without Phoenix)](standalone.md) ## Modules - [GoodJob.Application](GoodJob.Application.md): OTP Application for GoodJob. - [GoodJob.Behaviour](GoodJob.Behaviour.md): Behaviour for GoodJob workers. - [GoodJob.Bulk](GoodJob.Bulk.md): Buffers and enqueues multiple jobs together. - [GoodJob.CleanupTracker](GoodJob.CleanupTracker.md): Tracks cleanup intervals for automatic job cleanup. - [GoodJob.Config.Defaults](GoodJob.Config.Defaults.md): Default configuration values for GoodJob. - [GoodJob.Config.Env](GoodJob.Config.Env.md): Environment variable parsing and merging for GoodJob configuration. - [GoodJob.Config.Validation](GoodJob.Config.Validation.md): Configuration validation logic. - [GoodJob.ConfiguredJob](GoodJob.ConfiguredJob.md): Represents a job with pre-configured options (similar to Rails ActiveJob's ConfiguredJob). - [GoodJob.DatabaseURL](GoodJob.DatabaseURL.md): Parses and configures database connection from DATABASE_URL environment variable. - [GoodJob.Engines.Basic](GoodJob.Engines.Basic.md): Basic engine for job execution. - [GoodJob.Engines.Inline](GoodJob.Engines.Inline.md): Inline engine for testing. - [GoodJob.Errors](GoodJob.Errors.md): Error handling utilities for GoodJob. - [GoodJob.Execution](GoodJob.Execution.md): Ecto schema for good_job_executions table. - [GoodJob.ExecutionMode](GoodJob.ExecutionMode.md): Handles different execution modes for jobs. - [GoodJob.ExternalJob](GoodJob.ExternalJob.md): Extension for enqueueing jobs to be processed by external GoodJob workers. - [GoodJob.Job.Instance](GoodJob.Job.Instance.md): Represents a job instance that can be directly executed. - [GoodJob.Job.Query](GoodJob.Job.Query.md): Query scopes and filtering functions for GoodJob.Job. - [GoodJob.Job.State](GoodJob.Job.State.md): Job state calculation logic. - [GoodJob.JobCallbacks](GoodJob.JobCallbacks.md): Job callbacks for lifecycle hooks. - [GoodJob.JobExecutor.ErrorHandler](GoodJob.JobExecutor.ErrorHandler.md): Handles error classification and discard_on checking. - [GoodJob.JobExecutor.ResultHandler](GoodJob.JobExecutor.ResultHandler.md): Handles job execution results and state updates. - [GoodJob.JobExecutor.Timeout](GoodJob.JobExecutor.Timeout.md): Handles job execution with timeout. - [GoodJob.JobStats](GoodJob.JobStats.md): Provides statistics and metrics for jobs. - [GoodJob.JobStats.Aggregation](GoodJob.JobStats.Aggregation.md): Aggregation functions for job statistics. - [GoodJob.JobStats.Counters](GoodJob.JobStats.Counters.md): Job counting functions for statistics. - [GoodJob.JobStats.DatetimeHelpers](GoodJob.JobStats.DatetimeHelpers.md): Datetime conversion and formatting helpers for job statistics. - [GoodJob.JobStats.TimeSeries](GoodJob.JobStats.TimeSeries.md): Time series functions for job activity over time. - [GoodJob.Poller](GoodJob.Poller.md): Poller that regularly wakes up schedulers to check for new work. - [GoodJob.Process](GoodJob.Process.md): Ecto schema for good_job_processes table. - [GoodJob.Protocol](GoodJob.Protocol.md): GoodJob protocol helpers (internal/advanced use). - [GoodJob.Protocol.Deserializer](GoodJob.Protocol.Deserializer.md): Deserializes jobs from ActiveJob format for execution. - [GoodJob.Protocol.Notification](GoodJob.Protocol.Notification.md): Notification formatting for cross-language GoodJob communication. - [GoodJob.Protocol.Serialization](GoodJob.Protocol.Serialization.md): Low-level serialization compatibility layer for ActiveJob format. - [GoodJob.PubSub](GoodJob.PubSub.md): Broadcasts job events to Phoenix.PubSub for real-time LiveView updates. - [GoodJob.Registry](GoodJob.Registry.md): Registry for GoodJob processes. - [GoodJob.RepoPool](GoodJob.RepoPool.md): Database connection pool management for GoodJob. - [GoodJob.Scheduler.Supervisor](GoodJob.Scheduler.Supervisor.md): Supervisor for job schedulers. - [GoodJob.SettingManager](GoodJob.SettingManager.md): Manages job execution settings like pausing/unpausing queues. - [GoodJob.SettingSchema](GoodJob.SettingSchema.md): Ecto schema for good_job_settings table. - [GoodJob.Telemetry.Formatters](GoodJob.Telemetry.Formatters.md): Formatters for telemetry log messages. - [GoodJob.Telemetry.Logger](GoodJob.Telemetry.Logger.md): Default logger handler for GoodJob telemetry events. - [GoodJob.TestRepo](GoodJob.TestRepo.md): Test repository for GoodJob tests. - [GoodJob.Types.Interval](GoodJob.Types.Interval.md): Custom Ecto type for PostgreSQL interval. - [GoodJob.Utils](GoodJob.Utils.md): Shared utility functions used across GoodJob modules. - [GoodJob.Web.ChartFormatter](GoodJob.Web.ChartFormatter.md): Formats time series data for charting with UI concerns (labels, colors, etc.). This module handles presentation concerns and should be used by view/controller layers. - [GoodJob.Web.Components.Batches](GoodJob.Web.Components.Batches.md): Batches component for GoodJob LiveDashboard. - [GoodJob.Web.Components.Cron](GoodJob.Web.Components.Cron.md): Cron jobs component for GoodJob LiveDashboard. - [GoodJob.Web.Components.JobDetail](GoodJob.Web.Components.JobDetail.md): Job detail component for GoodJob LiveDashboard. - [GoodJob.Web.Components.Jobs](GoodJob.Web.Components.Jobs.md): Jobs list component for GoodJob LiveDashboard. - [GoodJob.Web.Components.Navigation](GoodJob.Web.Components.Navigation.md): Navigation components for GoodJob LiveDashboard (breadcrumbs and navbar). - [GoodJob.Web.Components.Overview](GoodJob.Web.Components.Overview.md): Overview component for GoodJob LiveDashboard. - [GoodJob.Web.Components.Pauses](GoodJob.Web.Components.Pauses.md): Pauses component for GoodJob LiveDashboard. - [GoodJob.Web.Components.Processes](GoodJob.Web.Components.Processes.md): Processes component for GoodJob LiveDashboard. - [GoodJob.Web.DataLoader](GoodJob.Web.DataLoader.md): Data loading functions for GoodJob LiveDashboard. - [GoodJob.Web.Formatters](GoodJob.Web.Formatters.md): Formatting utilities for GoodJob LiveDashboard. - [GoodJob.Web.LiveDashboardPage.DataLoader](GoodJob.Web.LiveDashboardPage.DataLoader.md): Data loading helpers for LiveDashboard page. - [GoodJob.Web.LiveDashboardPage.Handlers](GoodJob.Web.LiveDashboardPage.Handlers.md): Event handlers for LiveDashboard page. - [GoodJob.Web.LiveDashboardPage.Helpers](GoodJob.Web.LiveDashboardPage.Helpers.md): Helper functions for LiveDashboard page. - Core - [GoodJob](GoodJob.md): GoodJob is a concurrent, Postgres-based job queue backend for Elixir. - [GoodJob.Config](GoodJob.Config.md): Configuration management for GoodJob. - [GoodJob.Executor](GoodJob.Executor.md): Executor pattern for job execution. - [GoodJob.Job](GoodJob.Job.md): Ecto schema for good_jobs table. - [GoodJob.JobExecutor](GoodJob.JobExecutor.md): Executes jobs by deserializing and calling the perform function. - [GoodJob.JobState](GoodJob.JobState.md): Defines job states and state transitions. - Scheduling - [GoodJob.Cron.Entry](GoodJob.Cron.Entry.md): Represents a cron job entry with its schedule and configuration. - [GoodJob.Cron.Expression](GoodJob.Cron.Expression.md): Parses and evaluates cron expressions. - [GoodJob.CronManager](GoodJob.CronManager.md): Manages cron-like scheduled jobs. - [GoodJob.JobPerformer](GoodJob.JobPerformer.md): Performs jobs by querying the database and executing them. - [GoodJob.Scheduler](GoodJob.Scheduler.md): GenServer that schedules and executes jobs for a specific queue configuration. - Infrastructure - [GoodJob.AdvisoryLock](GoodJob.AdvisoryLock.md): Functions for PostgreSQL advisory locks. - [GoodJob.Notifier](GoodJob.Notifier.md): Handles PostgreSQL LISTEN/NOTIFY for low-latency job dispatch. - [GoodJob.ProcessTracker](GoodJob.ProcessTracker.md): Tracks GoodJob processes in the database for advisory lock management. - [GoodJob.Repo](GoodJob.Repo.md): Repository helper for GoodJob. - [GoodJob.Supervisor](GoodJob.Supervisor.md): Main supervisor for GoodJob. - Features - [GoodJob.Backoff](GoodJob.Backoff.md): Provides backoff calculation strategies for job retries. - [GoodJob.Batch](GoodJob.Batch.md): Batch job management. - [GoodJob.BatchRecord](GoodJob.BatchRecord.md): Ecto schema for good_job_batches table. - [GoodJob.Cleanup](GoodJob.Cleanup.md): Handles cleanup of preserved job records. - [GoodJob.Concurrency](GoodJob.Concurrency.md): Concurrency control for jobs. - [GoodJob.HealthCheck](GoodJob.HealthCheck.md): Health check utilities for GoodJob in production. - Testing - [GoodJob.Testing](GoodJob.Testing.md): Testing helpers for GoodJob. - [GoodJob.Testing.Assertions](GoodJob.Testing.Assertions.md): Assertion helpers for testing jobs. - [GoodJob.Testing.Helpers](GoodJob.Testing.Helpers.md): Helper functions for testing jobs. - [GoodJob.Testing.JobCase](GoodJob.Testing.JobCase.md): Test case template for job-related tests. - [GoodJob.Testing.RepoCase](GoodJob.Testing.RepoCase.md): Test case template for tests that require a database. - Web - [GoodJob.Web.LiveDashboard](GoodJob.Web.LiveDashboard.md): Standalone Phoenix LiveView dashboard for monitoring GoodJob. - [GoodJob.Web.LiveDashboardPage](GoodJob.Web.LiveDashboardPage.md): Phoenix LiveDashboard page for GoodJob. - Plugins - [GoodJob.Plugin](GoodJob.Plugin.md): Defines a shared behaviour for GoodJob plugins. - [GoodJob.Plugins.Lifeline](GoodJob.Plugins.Lifeline.md): Built-in plugin that recovers jobs stuck in executing state. - [GoodJob.Plugins.Pruner](GoodJob.Plugins.Pruner.md): Built-in plugin that periodically prunes old job records. - Telemetry - [GoodJob.Telemetry](GoodJob.Telemetry.md): Telemetry events for GoodJob. - Exceptions - [GoodJob.CrashError](GoodJob.CrashError.md) - [GoodJob.Errors.ConcurrencyExceededError](GoodJob.Errors.ConcurrencyExceededError.md) - [GoodJob.Errors.ConfigurationError](GoodJob.Errors.ConfigurationError.md) - [GoodJob.Errors.JobTimeoutError](GoodJob.Errors.JobTimeoutError.md) - [GoodJob.Errors.PreviouslyPerformedError](GoodJob.Errors.PreviouslyPerformedError.md) - [GoodJob.Errors.ThrottleExceededError](GoodJob.Errors.ThrottleExceededError.md) - [GoodJob.ExternalJob.LocalExecutionError](GoodJob.ExternalJob.LocalExecutionError.md) - [GoodJob.InterruptError](GoodJob.InterruptError.md): Exception raised when a job is interrupted (e.g., during shutdown). ## Mix Tasks - [mix good_job.install](Mix.Tasks.GoodJob.Install.md): Installs GoodJob by creating the necessary database migrations.