PostgreSQL-Native Background Jobs
Without the Complexity

Ditch Redis. Keep PostgreSQL. Get enterprise-grade job processing with unique jobs, dependencies, throttling, cron scheduling, and moreโ€”all backed by ACID guarantees.

500-1K
jobs/sec per worker
90%
query reduction
0
Redis servers needed

Why Postkiq?

๐ŸŽฏ

One Database. One Source of Truth.

No Redis to manage, monitor, or keep in sync. Your jobs live alongside your data with full ACID compliance and transactional integrity. Enqueue jobs in the same transaction as your business logicโ€”guaranteed consistency. Your Postkiq jobs are automatically backed up with your PostgreSQL dataโ€”no separate backup strategy needed.

๐Ÿš€

Production-Ready Performance

Achieve 500-1,000 jobs/sec per worker with intelligent optimizations: LISTEN/NOTIFY for instant job pickup (90% query reduction), multi-partition continuous fetching (70-90% thread utilization), and advisory locks for zero-contention coordination.

๐ŸŽจ

Feature-Rich Out of the Box

Built-in unique jobs, dependency chains, rate throttling, cron scheduling, batch processing, and multi-tenancy. No plugins needed. Everything you need for sophisticated job workflows is included and battle-tested.

๐Ÿ“Š

Beautiful Web Dashboard

Monitor jobs, queues, throttles, cron schedules, and dependencies in real-time. Search, filter, retry, and manage your jobs with a clean, intuitive interface. Gain visibility into your background processing at a glance.

๐Ÿ”’

Enterprise-Grade Multi-Tenancy

First-class tenant isolation with automatic integration for Apartment, ActsAsTenant, and activerecord-multi-tenant. Physical partition isolation ensures zero cross-tenant data leakage. Per-tenant controls, rate limiting, and queue management built-in.

โšก

Drop-In ActiveJob Replacement

Already using Sidekiq or Resque? Swap it out in minutes with our ActiveJob adapter. Keep your existing job code. Gain all of Postkiq's features. No rewrites required. Rails Action Mailer and Active Storage work seamlessly.

๐Ÿ’พ

Automatic Backup & Recovery

Your job queue is backed up with your PostgreSQL databaseโ€”no separate backup infrastructure needed. Point-in-time recovery restores both your data and jobs together. Never lose jobs during failures. Redis-based queues require separate backup strategies and risk job loss.

Powerful Features for Modern Applications

Everything you need to build sophisticated background job workflows

๐Ÿ”—

Job Dependencies

Build complex workflows with multi-level dependency chains, fan-out/fan-in patterns, and diamond dependencies. Automatic cascade failure handling and transitive dependency support.

  • Sequential job chains
  • Parallel branches
  • Conditional execution
  • Visual dependency trees in dashboard
๐ŸŽฏ

Unique Jobs

Built-in deduplication prevents duplicate job execution. Three lock modes and five conflict strategies give you fine-grained control over job uniqueness.

  • Lock until executing, executed, or completed
  • Strategies: log, reject, replace, reschedule, raise
  • SHA256 digest-based uniqueness
  • PostgreSQL unique index enforcement
๐ŸŽš๏ธ

Throttling & Rate Limiting

Protect external APIs and resources with threshold-based and concurrency-based throttling. Multiple scopes: global, tenant, queue, job class, partition key, and combinations.

  • Max executions per time window
  • Max concurrent running jobs
  • Dynamic throttle adjustment
  • Real-time monitoring
โฐ

Cron Scheduling

Database-stored cron schedules with standard cron expression syntax. Timezone-aware execution, health monitoring, and execution history tracking built-in.

  • Standard cron expressions
  • Timezone support
  • Execution history
  • Schedule drift detection
๐Ÿ“ฆ

Batch Processing

Enqueue thousands of jobs in milliseconds with bulk inserts. Process batches in parallel with configurable batch sizes. 10,000x faster than individual inserts.

  • Automatic job batching
  • Configurable batch sizes
  • Parallel processing within batches
  • Performance metrics collection
๐ŸŽฏ

Job Priorities

Integer-range priorities (-2 billion to +2 billion) for fine-grained job ordering. Per-job and class-level priorities with partition-aware processing.

  • Wide integer range for flexibility
  • Per-job priority override
  • Class-level defaults
  • Priority-based dequeuing index
โšก

Parallelizable Jobs

Enable concurrent processing for independent operations like email sends or thumbnail generation. Automatic partition key splitting for ~4,096 possible sub-partitions per tenant.

  • 100x throughput improvement
  • Automatic partition splitting
  • Safe for independent operations
  • Combined with batching for max speed
๐Ÿ”Œ

Middleware & Callbacks

Sidekiq-compatible middleware system for cross-cutting concerns. Rich callback lifecycle for enqueueing, execution, success, failure, retry, and dead letter events.

  • Client and server middleware
  • Before/after/around callbacks
  • Error tracking integration
  • Metrics and observability hooks
๐Ÿ“Š

Partitioning & Scalability

Two-level partitioning strategy (hash + time) scales to billions of jobs. 16 physical hash partitions for distribution, monthly time-based sub-partitions for easy cleanup.

  • Handles billions of jobs
  • Hundreds of workers concurrently
  • Thousands of tenants
  • Automatic partition management

Built for Performance

Intelligent optimizations deliver production-grade throughput and efficiency

Throughput

500-1,000 jobs/sec per worker (10 threads)
50,000+ jobs/sec with batch processing
Linear scaling with workers

Latency

<100ms job pickup (with LISTEN/NOTIFY)
<1ms enqueueing per job
Microseconds to seconds end-to-end

Resource Efficiency

90% query reduction (LISTEN/NOTIFY)
70-90% thread utilization
80-90% connection reduction (lazy acquisition)

What Makes It Fast

๐Ÿ””

LISTEN/NOTIFY Push

PostgreSQL LISTEN/NOTIFY for instant job pickupโ€”90% query reduction vs polling

๐Ÿ”„

Multi-Partition Fetching

Continuous fetching across partitionsโ€”70-90% thread utilization, 5-10x throughput improvement

๐Ÿ”’

Advisory Locks

Worker coordination without contentionโ€”1000x sequence lock reduction

๐ŸŽฏ

FOR UPDATE SKIP LOCKED

Transactional job claims with zero lock contentionโ€”multiple workers, no conflicts

๐Ÿ’ค

Lazy Connection Acquisition

80-90% connection reductionโ€”acquire connections only when executing jobs

๐Ÿ“Š

Smart Partitioning

Hash + time-based partitioningโ€”billions of jobs with consistent performance

Get Started in Minutes

Add Postkiq to your Rails app and start processing jobs

1. Install

# Gemfile
gem 'postkiq'

# Install
bundle install

# Run migrations
rails generate postkiq:install
rails db:migrate

2. Create a Job

# app/jobs/welcome_email_job.rb
class WelcomeEmailJob
  include Postkiq::Job

  def perform(user_id)
    user = User.find(user_id)
    UserMailer.welcome(user).deliver_now
  end
end

3. Enqueue

# Enqueue immediately
WelcomeEmailJob.perform_later(user.id)

# Schedule for later
WelcomeEmailJob.set(wait: 1.hour).perform_later(user.id)

# With priority
WelcomeEmailJob.set(priority: 10).perform_later(user.id)

# Bulk enqueue (10,000x faster!)
WelcomeEmailJob.perform_bulk(
  User.pluck(:id).map { |id| [id] }
)

4. Start Worker

# Start the worker process
bundle exec postkiq

# Or with options
bundle exec postkiq --threads 20 --queues critical,default

Advanced Features

Unique Jobs

class ImportJob
  include Postkiq::Job

  postkiq_options unique: :until_executed,
                  unique_args: ->(args) { args[0] }

  def perform(tenant_id)
    # Only one import per tenant at a time
  end
end

Job Dependencies

batch = Postkiq::Batch.new

# Fan-out: process in parallel
users.each do |user|
  batch.jobs << WelcomeEmailJob.new(user.id)
end

# Fan-in: run after all complete
batch.on_complete do
  SendSummaryJob.perform_later
end

batch.enqueue

Rate Throttling

class ApiJob
  include Postkiq::Job

  postkiq_options throttle: {
    threshold: {
      limit: 100,
      period: 1.minute,
      scope: :partition_key
    }
  }

  def perform(data)
    # Max 100 calls/minute per partition
  end
end

Cron Scheduling

# config/initializers/postkiq.rb
Postkiq.configure do |config|
  config.add_cron_entry(
    name: "daily_report",
    cron: "0 9 * * *",
    class: "DailyReportJob",
    timezone: "America/New_York"
  )
end

Simple, Transparent Pricing

Start free. Scale when you need advanced features. Save $60,000+/year compared to Redis + Kafka.

Open Source

$0 /forever

Individual developers, small projects, basic job processing

  • โœ… Basic job processing
  • โœ… Retries & error handling
  • โœ… Graceful shutdown
  • โœ… ACID guarantees
  • โœ… Read-only Web UI
  • โœ… LISTEN/NOTIFY (90% less polling)
  • โœ… Dead letter queue
  • โœ… 10,000+ jobs/sec
  • โœ… Community support (GitHub)
  • โœ… MIT License
Get Started Free

Open source forever. No credit card.

Most Popular

Pro

$99 /month

Startups & production apps needing advanced scheduling & processing

  • โœ… Everything in Open Source
  • โœ… Cron jobs (timezone support)
  • โœ… Batch processing (100x faster)
  • โœ… Unique jobs (prevent duplicates)
  • โœ… Pause/resume queues
  • โœ… Enhanced Web UI (manage jobs)
  • โœ… Email support
  • ๐Ÿ’ฐ $1,188/year (annual billing)
  • ๐Ÿ’ฐ 16% discount on annual plans
Start 30-Day Trial

33% less than Sidekiq Pro ($1,799/yr)

Enterprise

$299 /month

Large companies needing multi-tenancy & advanced controls

  • โœ… Everything in Pro
  • โœ… Multi-tenancy (physical isolation)
  • โœ… Rate limiting (protect APIs)
  • โœ… Throttling & concurrency limits
  • โœ… Stats API & dashboard analytics
  • โœ… Hot partition handling
  • โœ… Priority support (Slack/email)
  • ๐Ÿ’ฐ $3,588/year (annual billing)
  • ๐Ÿ’ฐ More features than Sidekiq Pro
Start 30-Day Trial

Enterprise-grade features included

๐Ÿ’ฐ Save $60,000+/Year vs Redis + Kafka

Traditional setups cost $66,000-122,000/year (Redis hosting + Kafka hosting + DevOps time + compliance). Postkiq runs on PostgreSQL you already have.

Traditional Stack $66K-122K/yr Redis + Kafka + DevOps
โ†’
Postkiq Enterprise $3,588/yr Just PostgreSQL

Save $60,000-100,000 annually. No Redis. No Kafka. One system to manage.

Pricing FAQ

Can I try Pro/Enterprise for free?

Yes! 30-day free trial on all paid plans. No credit card required.

What's included in annual billing?

16% discount (2 months free). Pro: $1,188/yr. Enterprise: $3,588/yr.

How does this compare to Sidekiq?

Postkiq Pro ($1,188/yr) is 33% less than Sidekiq Pro ($1,799/yr) with more features.

Do I need Redis or Kafka?

No! Postkiq runs entirely on PostgreSQL. Save $60K+/year on infrastructure.

How Does Postkiq Compare?

Feature Postkiq Sidekiq Resque GoodJob
Backend PostgreSQL Redis Redis PostgreSQL
ACID Guarantees โœ… โŒ โŒ โœ…
Built-in Unique Jobs โœ… โŒ (plugin) โŒ โœ…
Job Dependencies โœ… โŒ (Pro) โŒ โŒ
Rate Throttling โœ… โŒ (Pro) โŒ โŒ
Cron Scheduling โœ… โŒ (Pro) โŒ โœ…
Multi-Tenancy โœ… (First-class) Manual Manual Manual
Web Dashboard โœ… โœ… โœ… โœ…
Throughput 500-1K jobs/sec 5K+ jobs/sec 100-500 jobs/sec 100-500 jobs/sec
Extra Infrastructure None Redis server Redis server None
Automatic Backup with Data โœ… โŒ (Separate) โŒ (Separate) โœ…
Cost Free (MIT) Free / $179/mo Pro Free (MIT) Free (MIT)

When to Choose Postkiq

  • You want to eliminate Redis from your stack
  • You need ACID guarantees for job enqueueing
  • You want built-in unique jobs, dependencies, and throttling
  • You're building a multi-tenant SaaS application
  • You prefer PostgreSQL-native solutions
  • You want 500-1,000 jobs/sec throughput (good enough for most apps)

When to Choose Sidekiq

  • You need maximum throughput (5K+ jobs/sec)
  • You're already heavily invested in Redis
  • You have ultra-high-volume job processing needs
  • You're comfortable managing Redis infrastructure

Perfect For

๐Ÿข

SaaS Applications

First-class multi-tenancy with automatic isolation, per-tenant rate limiting, and zero cross-tenant data leakage. Built for Apartment, ActsAsTenant, and Citus.

๐Ÿ“ง

Email Processing

Send thousands of emails with batch processing and parallelizable jobs. Throttle to respect API limits. Ensure uniqueness to prevent duplicates.

๐Ÿ”„

Data Pipelines

Build complex ETL workflows with job dependencies, conditional execution, and cascade failure handling. Monitor progress in the dashboard.

๐Ÿ–ผ๏ธ

Media Processing

Generate thumbnails, transcode videos, and process images in parallel. Batch processing for efficiency, throttling to control resource usage.

๐Ÿ“Š

Reporting & Analytics

Schedule daily/weekly reports with cron. Process large datasets with batch jobs. Chain dependent report stages with job dependencies.

๐Ÿ””

Notifications

Deliver push notifications, SMS, and emails with rate limiting. Deduplicate notifications with unique jobs. Monitor delivery in real-time.

Ready to Simplify Your Background Jobs?

Join developers who've eliminated Redis and gained enterprise features with Postkiq