Sidekiq - 工人推到另一个队列的任何副作用?

Sidekiq - Any side effect of a worker pushing to another queue?

我正在处理许多 Sidekiq 作业(数千万),结果是 return 1 个字符串和 2 个整数。有一台中央计算机托管 Redis server/storing 结果,多台计算机充当工作人员,从这台中央计算机获取数据。

在 worker 内部,我执行处理所需的逻辑,在调用结果后,我只需调用:

Sidekiq::Client.push('class' => ResultsWorker, 'args' => [arg1, arg2, arg3])

在中央计算机上,我只有另一个工作人员检查这个队列并将结果存储在数据库中。

我在这个 Sidekiq 社区的任何地方都没有看到这种 "two-way communication" 的模式被提及。所以我想知道,这是有原因的吗?这样做有什么副作用吗?我已经尝试在 redis 服务器组件上放置一个简单的网络应用程序,它接受结果并存储它们,但我认为对于如此小的数据,为什么不重新使用具有不同队列的同一个 Redis 服务器?

I haven't seen such a pattern of "two-way communication" being mentioned anywhere in this Sidekiq community.

这不需要任何特别提及或讨论,因为这没有什么特别或不寻常的。一个工作确实可以排队其他一些工作。这种情况在大型应用程序中左右发生。


尽管您应该根据您的情况衡量这种具体情况的开销。可能会发现直接从第一个作业持久化到数据库会快得多(在发出网络请求等方面没有损失)