我想知道在Sidekiq中放置许多数据库交互是否是最好的设计实践。
我有一个服务对象,可以向User
发送短信。它只检索id
个用户并在Sidekiq工人类上调用.perform_async
。
SMS包含许多有关其他型号的信息。因此,worker有一个很长的#perform
方法,它只设置了一些临时变量。
例如,它正在查询jobs
,bids
,business
等表,并在ActiveRecord对象上调用关联。
服务有责任检索所有数据,并将这些id
传递给工作人员吗?或者我可以传递id
的{{1}}并让工作人员担心数据库和关联吗?
答案 0 :(得分:0)
是的,将大量数据库工作放在您的工作人员中是完全正常的,只需记住坚持Sidekiq的最佳实践。