我一直在寻找这个问题的解决方案。我尝试用谷歌搜索,但还没有找到任何东西。
问题:
我有这个 worker
class MailWorker
def perform(user_id)
user = User.find(user_id)
...
end
end
它已经运行了很长时间了。然后,需求发生变化,我们必须传递reservation_id而不是user_id。
因此工作人员更新为:
class MailWorker
def perform(reservation_id)
reservation = Reservation.find(reservation_id)
....
end
end
问题是,如果我们推送此代码,一些工作人员已经在 Q 中。因此,这些工作人员将尝试查找用户,但新代码正在使用事务。
最好的方法是什么?我们是否必须创建新的 Worker 而不是使用现有的 Worker,并在安全后删除旧的 Worker?或者有什么办法可以解决这个问题吗?
谢谢
最佳答案
我个人会为此创建一个新的 Worker。
这使得处理所有工作变得更加容易。 (并且向后兼容)
关于ruby-on-rails - Sidekiq 更改参数或参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38325632/