Solid Queue:Ruby中基于数据库的后端队列作业系统


Solid Queue 是一个基于数据库的Active Job队列后端,设计时考虑到了简单性和性能。

除了常规作业排队和处理之外,Solid Queue 还支持延迟作业、并发控制、暂停队列、每个作业的数字优先级以及按队列顺序排列的优先级。对日志perform_all_later记录和检测的改进、更好的 CLI 工具、在现有进程中以“异步”模式运行的方法、独特的作业和重复的、类似 cron 的任务很快就会推出。

Solid Queue 可与 MySQL、PostgreSQL 或 SQLite 等 SQL 数据库一起使用,并且它利用该FOR UPDATE SKIP LOCKED子句(如果可用)来避免在轮询作业时阻塞和等待锁。它依赖 Active Job 进行重试、丢弃、错误处理、序列化或延迟,并且与 Ruby on Rails 多线程兼容。

要将 Solid Queue 设置为活动作业的队列后端,您应该将其添加到您的环境配置中:

# config/environments/production.rb
config.active_job.queue_adapter = :solid_queue

或者,如果您从另一个适配器迁移并希望逐步移动作业,则可以仅设置特定作业以使用 Solid Queue 作为后端:

# app/jobs/my_job.rb

class MyJob < ApplicationJob
  self.queue_adapter = :solid_queue
  # ...
end