📅  最后修改于: 2023-12-03 15:20:08.344000             🧑  作者: Mango
Sidekiq 是一个简单高效的 Ruby 后台任务处理器,其基于 Redis 提供了优异的性能表现。如果你的 Rails 应用中有异步、延迟任务等需要处理,Sidekiq 如果没用上一定是你 Rails 应用的瓶颈之一。
Sidekiq 特性:
Sidekiq 的安装非常简单,只需要在 Gemfile 中引入 gem 依赖:
gem 'sidekiq'
再在终端执行 bundle install,
bundle install
Sidekiq 需要我们创建任务,其实就是一个继承自 ActiveJob::Base 的 Ruby 类,我们可以以这个类作为模板创建自己的任务。
class MyJob < ActiveJob::Base
queue_as :default
def perform(*args)
# some code here
end
end
以上代码就定义了一个名为 MyJob 的任务,并将其加入到 default 队列。
终端输入以下代码启动工作进程以执行队列中的任务:
bundle exec sidekiq
你的任务已经开始处理啦!
enqueue 方法是加入任务到队列的方式,使用方法如下:
MyJob.enqueue(args)
以上代码会将 MyJob 输入到 default 中,args 是可以用来传递运行时参数的函数参数。接下来,在你运行 bundle exec sidekiq
启动 Sidekiq 进程的时候,这个任务就会被执行。
如果你想加入消息队列而不执行,可以使用 deliver_later 方法:
MyJob.deliver_later(args)
你可以在 config/initializers/sidekiq.rb 中配置全局的 Sidekiq 配置,如:
Sidekiq.configure_server do |config|
config.redis = { url: 'redis://redis.example.com:7372/12' } # 自定义数据库连接
config.poll_interval = 5 # 轮询后台任务时间
config.sidekiq_options = { 'backtrace' => true } # 设置任务的默认选项
end
Sidekiq.configure_client do |config|
config.redis = { url: 'redis://redis.example.com:7372/12' } # 自定义数据库连接
end
除了上述代码分享,Sidekiq 还有更多的特色和功能,例如支持 ActiveJob、支持执行器、支持标记任务状态等等。如果你想深入了解 Sidekiq,请访问 https://sidekiq.org/。
希望这篇文章可以让你更好地了解和使用 Sidekiq,期待你的反馈和分享!