Sidekiq工作人员的责任

时间:2015-05-08 00:32:49

标签: ruby-on-rails sidekiq

我想知道在Sidekiq中放置许多数据库交互是否是最好的设计实践。

我有一个服务对象,可以向User发送短信。它只检索id个用户并在Sidekiq工人类上调用.perform_async

SMS包含许多有关其他型号的信息。因此,worker有一个很长的#perform方法,它只设置了一些临时变量。

例如,它正在查询jobsbidsbusiness等表,并在ActiveRecord对象上调用关联。

服务有责任检索所有数据,并将这些id传递给工作人员吗?或者我可以传递id的{​​{1}}并让工作人员担心数据库和关联吗?

1 个答案:

答案 0 :(得分:0)

是的,将大量数据库工作放在您的工作人员中是完全正常的,只需记住坚持Sidekiq的最佳实践。

  1. 让您的工作参数小而简单。
  2. 让您的工作具有幂等性和交易性。
  3. 拥抱并发。
  4. https://github.com/mperham/sidekiq/wiki/Best-Practices