Ditch Redis. Keep PostgreSQL. Get enterprise-grade job processing with unique jobs, dependencies, throttling, cron scheduling, and moreโall backed by ACID guarantees.
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.
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.
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.
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.
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.
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.
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.
Everything you need to build sophisticated background job workflows
Build complex workflows with multi-level dependency chains, fan-out/fan-in patterns, and diamond dependencies. Automatic cascade failure handling and transitive dependency support.
Built-in deduplication prevents duplicate job execution. Three lock modes and five conflict strategies give you fine-grained control over job uniqueness.
Protect external APIs and resources with threshold-based and concurrency-based throttling. Multiple scopes: global, tenant, queue, job class, partition key, and combinations.
Database-stored cron schedules with standard cron expression syntax. Timezone-aware execution, health monitoring, and execution history tracking built-in.
Enqueue thousands of jobs in milliseconds with bulk inserts. Process batches in parallel with configurable batch sizes. 10,000x faster than individual inserts.
Integer-range priorities (-2 billion to +2 billion) for fine-grained job ordering. Per-job and class-level priorities with partition-aware processing.
Enable concurrent processing for independent operations like email sends or thumbnail generation. Automatic partition key splitting for ~4,096 possible sub-partitions per tenant.
Sidekiq-compatible middleware system for cross-cutting concerns. Rich callback lifecycle for enqueueing, execution, success, failure, retry, and dead letter events.
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.
Intelligent optimizations deliver production-grade throughput and efficiency
PostgreSQL LISTEN/NOTIFY for instant job pickupโ90% query reduction vs polling
Continuous fetching across partitionsโ70-90% thread utilization, 5-10x throughput improvement
Worker coordination without contentionโ1000x sequence lock reduction
Transactional job claims with zero lock contentionโmultiple workers, no conflicts
80-90% connection reductionโacquire connections only when executing jobs
Hash + time-based partitioningโbillions of jobs with consistent performance
Add Postkiq to your Rails app and start processing jobs
# Gemfile
gem 'postkiq'
# Install
bundle install
# Run migrations
rails generate postkiq:install
rails db:migrate
# 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
# 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] }
)
# Start the worker process
bundle exec postkiq
# Or with options
bundle exec postkiq --threads 20 --queues critical,default
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
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
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
# 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
Start free. Scale when you need advanced features. Save $60,000+/year compared to Redis + Kafka.
Individual developers, small projects, basic job processing
Open source forever. No credit card.
Startups & production apps needing advanced scheduling & processing
33% less than Sidekiq Pro ($1,799/yr)
Large companies needing multi-tenancy & advanced controls
Enterprise-grade features included
Traditional setups cost $66,000-122,000/year (Redis hosting + Kafka hosting + DevOps time + compliance). Postkiq runs on PostgreSQL you already have.
Save $60,000-100,000 annually. No Redis. No Kafka. One system to manage.
Yes! 30-day free trial on all paid plans. No credit card required.
16% discount (2 months free). Pro: $1,188/yr. Enterprise: $3,588/yr.
Postkiq Pro ($1,188/yr) is 33% less than Sidekiq Pro ($1,799/yr) with more features.
No! Postkiq runs entirely on PostgreSQL. Save $60K+/year on infrastructure.
| 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) |
First-class multi-tenancy with automatic isolation, per-tenant rate limiting, and zero cross-tenant data leakage. Built for Apartment, ActsAsTenant, and Citus.
Send thousands of emails with batch processing and parallelizable jobs. Throttle to respect API limits. Ensure uniqueness to prevent duplicates.
Build complex ETL workflows with job dependencies, conditional execution, and cascade failure handling. Monitor progress in the dashboard.
Generate thumbnails, transcode videos, and process images in parallel. Batch processing for efficiency, throttling to control resource usage.
Schedule daily/weekly reports with cron. Process large datasets with batch jobs. Chain dependent report stages with job dependencies.
Deliver push notifications, SMS, and emails with rate limiting. Deduplicate notifications with unique jobs. Monitor delivery in real-time.
Join developers who've eliminated Redis and gained enterprise features with Postkiq