Sidekiq 是一个多线程的后台任务处理系统,基本概念如下:
job :某一个任务的一次执行;
worker:Sidekiq
是使用 Celluoid 来完成其多线程的控制的, 而 Celluoid 是 Ruby 中的多线程模式 Actor 模式的实现,worker按照任务列表执行任务;
queue:队列用于区分任务并且让任务排队, Sidekiq 中将每一类的任务使用一个 queue 来区分开;
Redis Server:存储任务的 Redis 来源;
Redis Client:Redis 作为一个任务提交者, 通过 Worker 向指定的 Redis Client 中提交任务。
以在Rails中使用sidekiq为例说明。
1.Gemfile添加 :
gem "redis", "~> 3.0.7"
gem 'sidekiq'
2.编辑启动配置文件 config/sidekiq.yml:
:concurrency: 5 # 并发数 :pidfile: tmp/pids/sidekiq.pid :logfile: ./log/sidekiq.log # 输出的日志地址 :queues: - default # 写在队列参数中的, 表示让 sidekiq 处理这个 queue - [myqueue, 2] # 使用数组的形式写, 第一个参数为打开的 queue 的名称, 第二个为优先级 development: :concurrency: 5 staging: :concurrency: 10 production: :concurrency: 20
3.编辑initializers/sidekiq.rb,初始化Redis和Sidekiq config: