📜  sidekiq 立即开始工作 (1)

📅  最后修改于: 2023-12-03 15:20:08.344000             🧑  作者: Mango

Sidekiq 立即开始工作

Sidekiq 是一个简单高效的 Ruby 后台任务处理器,其基于 Redis 提供了优异的性能表现。如果你的 Rails 应用中有异步、延迟任务等需要处理,Sidekiq 如果没用上一定是你 Rails 应用的瓶颈之一。

Sidekiq 特性:

  • 快速:基于 Redis 的内存数据库实现,高效运行。
  • 轻量级:不占用 Rails 进程,处理器分离出来的 Sidekiq 进程。
  • 费用低廉:官方支持开源,可以通过开发者的捐赠和付费插件维护项目。
1. Sidekiq 的安装

Sidekiq 的安装非常简单,只需要在 Gemfile 中引入 gem 依赖:

gem 'sidekiq'

再在终端执行 bundle install,

bundle install
2. 建立一个任务

Sidekiq 需要我们创建任务,其实就是一个继承自 ActiveJob::Base 的 Ruby 类,我们可以以这个类作为模板创建自己的任务。

class MyJob < ActiveJob::Base
  queue_as :default

  def perform(*args)
    # some code here
  end
end

以上代码就定义了一个名为 MyJob 的任务,并将其加入到 default 队列。

3. 运行 Sidekiq APT

终端输入以下代码启动工作进程以执行队列中的任务:

bundle exec sidekiq

你的任务已经开始处理啦!

4. 任务使用

enqueue 方法是加入任务到队列的方式,使用方法如下:

MyJob.enqueue(args)

以上代码会将 MyJob 输入到 default 中,args 是可以用来传递运行时参数的函数参数。接下来,在你运行 bundle exec sidekiq 启动 Sidekiq 进程的时候,这个任务就会被执行。

如果你想加入消息队列而不执行,可以使用 deliver_later 方法:

MyJob.deliver_later(args)
5. 配置 Sidekiq

你可以在 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,期待你的反馈和分享!