我有一个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
答案 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