当前,我在我的Sidekiq工作人员之一中拥有以下代码:
def perform(identity_id, format, model, items_ids, columns, options)
ExportListService::Dispatcher.new(
identity: identity_from(identity_id),
format: format,
items: items_from(model, items_ids),
columns: columns,
options: options&.symbolize_keys! || {}
).perform
end
items_from
方法负责按照在数组items_ids
中发送的顺序从数据库中恢复每个项目,然后我们继续进行该服务。
订单非常重要,因为启动此工作程序的控制器具有多个过滤器和选项,ID可以按各种顺序发送,当传输到Sidekiq时不应丢失。
效果很好,但是我意识到这个items_ids
数组中可以包含超过5000个条目。
就可伸缩性而言,什么是最好的?
OR
items_ids
进行排序,然后将其复制到工作程序中(这意味着可能存在重复且难以维护代码)我应该采取什么解决方案?还有我没想到的其他可能性吗?