Sidekiq 工人的责任

Sidekiq worker's responsibility

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

我有一个向 User 发送 SMS 消息的服务对象。它只检索 id 个用户并在 Sidekiq worker class.

上调用 .perform_async

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

比如查询jobsbidsbusiness等表,在ActiveRecord对象上调用关联

是否应该由服务负责检索所有数据,并将这些 id 简单地传递给工作人员?或者我可以只传入 userid 并让工作人员担心数据库和关联吗?

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

  1. 使您的作业参数小而简单。
  2. 使您的工作具有幂等性和事务性。
  3. 拥抱并发。

https://github.com/mperham/sidekiq/wiki/Best-Practices