在sidekiq工人类中有多个方法

时间:2013-03-13 20:33:30

标签: ruby ruby-on-rails-3 sidekiq

我有一个sidekiq工人班。我目前以这种方式实现它。它在我调用PROCESS时有效,它会将名为PERFORM的方法排队。但是我希望有多种方法可以排队。

作为旁注,这样做并且只是做SocialSharer.delay.perform会有区别吗?

# I trigger by using SocialSharer.process("xxx")

class SocialSharer

  include Sidekiq::Worker

  def perform(user_id)
    # does things
  end

  def perform_other_things
    #i do not know how to trigger this
  end

  class << self
    def process(user_id)
      Sidekiq::Client.enqueue(SocialSharer,user_id)
    end
  end

end

2 个答案:

答案 0 :(得分:7)

SocialSharer.delay.perform会延迟名为perform的类方法。您的perform方法是一个实例方法。

工人被设计成每个工作一个班级。作业通过perform方法启动。您可以使用延迟在类上启动任意数量的不同类方法,如下所示:

class Foo
  def self.a(count)
  end
  def self.b(name)
  end
end
Foo.delay.a(10)
Foo.delay.b('bob')

答案 1 :(得分:-3)

好吧,如果确实希望在一个类中使用所有“可执行”方法,我建议您将perform方法重命名为不同的方法(例如,{{1} }),并创建一个新的perform_something方法,调度控制流:

perform