在SideKiq中,文档说
Sidekiq.configure_server do |config|
config.redis = {:namespace => "figs_#{Rails.env}", :size => 25, :url => 'redis://localhost:6379/0'}
end
Sidekiq.configure_client do |config|
config.redis = {:namespace => "figs_#{Rails.env}", :size => 25, :url => 'redis://localhost:6379/0'}
end
我很好奇这个configure_server和configure_client在这里意味着什么?
config.redis = {:namespace => "figs_#{Rails.env}", :size => 25, :url => 'redis://localhost:6379/0'}
显然是redis的位置,队列类型等。
答案 0 :(得分:7)
客户端是将工作推送到Redis的任何东西,通常是运行Rails或Sinatra的乘客,美洲狮或独角兽进程。服务器是Sidekiq进程,它从Redis中提取作业。一个复杂性:Sidekiq服务器进程可以将新作业推送到Redis,因此也像客户端一样!
config/sidekiq.yml
意味着允许与命令行args相同的配置。初始化程序用于需要Ruby的更复杂的配置,例如Redis连接信息或自定义中间件。
答案 1 :(得分:0)
Sidekiq有一个客户端中间件,它在将作业插入Redis之前运行,而服务器端则在处理作业之前运行。此中间件重试作业,记录它们并处理异常。
因此,您可以设置大小为25以处理作业(服务器端),将10用于将作业添加到队列(客户端)。这会增加make队列空的概率。
但我仍然不明白为什么在config/initializers/sidekiq.rb
和其他一些配置中存在某些配置,但在/config/sidekiq.yml
中类似(请参阅Sidekiq:Advanced options)
答案 2 :(得分:-1)
我喜欢考虑它,因为它适用于Heroku。有两个主要过程(dynos)web和worker。
类型为web的Dynos是运行应用程序(Web服务器)的地方,因此路由器的所有连接都会传送到您的Web dynos,以便您的应用程序提供响应。
属于worker类型的Dynos是处理后台作业的地方。这是Sidekiq执行它的执行方法的地方,这样它就不会阻止你的web dyno。
在网络dynos中运行Sidekiq.configure_client。它配置您的web dyno如何连接到Sidekiq并提交作业。
在工作人员dynos中运行Sidekiq.configure_server。它配置你的工作人员dyno如何连接到Sidekiq并处理工作。