【问题标题】:Using `delay` in Sidekiq with dynamic class/method names在 Sidekiq 中使用带有动态类/方法名称的“延迟”
【发布时间】:2018-02-21 12:14:16
【问题描述】:

假设我有一些内部业务逻辑来确定需要发送什么邮件。

这个业务逻辑的输出是一个Hash,格式如下-

{ mailer_class: SomeMailer, mailer_method: "foo_email" }
{ mailer_class: OtherMailer, mailer_method: "bar_email" }
# etc...

我需要根据上面的信息调用适当的邮件程序,所以我尝试使用 Sidekiq 内置的类似方法 delay -

data = { mailer_class: ..., mailer_method: "..." } 
data[:mailer_class].delay.send(mailer[:method])

这导致 Sidekiq 排队 send 方法,最终将在我的邮件程序上调用。

从功能上讲,它可能会正常工作,因为该类毕竟会收到适当的方法。但它感觉有点脏,它会中断观察sidekiq队列的其他进程,因为他们希望看到一个邮件方法名称,但却找到:send

有没有解决这个问题的好方法,或者我是否坚持修改我的应用程序逻辑的其余部分来处理这个问题?

谢谢!

【问题讨论】:

    标签: actionmailer sidekiq


    【解决方案1】:

    为什么不将该哈希传递给知道如何使用该类/方法组合发送电子邮件的 Sidekiq Worker?

    def perform(hash)
      hash['mailer_class'].constantize.send(hash['mailer_method'])
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多