基础
commit信息:Updated The Basics (markdown) | 提交者:mperham | 提交时间:2016-09-22 | 版本:3de4b2e
Sidekiq是一个后台作业程序框架。它让你使用后台负载作业来扩展应用。这需要三部分:
客户端
Sidekiq客户端可以运行在任何ruby进程中(像puma或者passenger进程)并且允许创建稍后处理的作业。在应用代码里有两种创建作业的方式:
MyWorker.perform_async(1, 2, 3)
Sidekiq::Client.push('class' => MyWorker, 'args' => [1, 2, 3]) # 低水平普通API
这两个方法是等效的,创建一个Hash来代表这个作业,序列化Hash为JSON字符串然后把字符串推送到Redis队列。这也意味着worker中的参数必须是普通的JSON 数据类型(numbers, strings, boolean, array, hash)。复杂的Ruby对象(例如,Date, Time, ActiveRecord models)将不能正确序列化。
Redis
Sidekiq使用Redis储存数据。它保存所有作业数据、运行时数据和历史数据用以支持Sidekiq Web UI的功能。
关于连接Redis的信息可以查看使用Redis这节
服务
每个Sidekiq服务进程从Redis队列获取这些作业然后执行它们。像web进程一样,Sidekiq引导Rails,因此,作业和workers可以使用完整的Rails API(包括Active Record)。服务将实例化worker然后搭配给予的参数来调用perform
方法。其它的一切取决于你的代码。