- 将Sidekiq升级到6.4版本时,触发了关于不安全任务参数的警告(包含符号键和Time对象的非JSON安全哈希)。
- 在初始化程序中使用`Sidekiq.strict_args!`可将警告转换为错误,以强制执行最佳实践。
- 最佳实践是仅将标量值(字符串、数字、布尔值、nil)作为位置参数传递,而不传递哈希等复杂对象。
- 要安全地更改任务的参数签名,请创建一个具有新签名的重复任务类(例如`RequestLogWorker2`)。
- 部署新的任务类,并将所有调用者迁移到使用它;旧的任务积压最终会清除。
- 一旦旧的任务积压为空,将新类重命名为原始名称(例如`RequestLogWorker`),并添加别名(`RequestLogWorker2 = RequestLogWorker`)来处理任何剩余的排队任务。
- 别名积压清除后,移除别名——迁移完成,任务签名已安全更改。