Beanstalkd 在伪造队列工作人员上同时运行队列中的所有作业

Posted

技术标签:

【中文标题】Beanstalkd 在伪造队列工作人员上同时运行队列中的所有作业【英文标题】:Beanstalkd running all jobs in the queue simultaneously on forge queue workers 【发布时间】:2016-09-14 11:40:51 【问题描述】:

我在 Laravel Lumen 5.1 上运行 API 构建,但在使用 beanstalkd 作为驱动程序时,我似乎无法让 Forge Queue Worker 正常工作。似乎同时运行队列中的所有作业

我正在使用 Forge UI 来设置驱动程序

Queue Worker setup

还有 .env 驱动程序 The .env drivers

队列系统在没有任何工作人员处理的情况下手动运行时工作正常。

如果您需要更多信息来帮助我,请尽管询问!

【问题讨论】:

【参考方案1】:

消息队列的目的是允许并行处理。如果您有更多的工人,例如:更多的线程,它将同时运行尽可能多的作业。

为了实现非同时,这是违反直觉和违反消息队列原则的。您可以使用 1 个工作人员来实现这一目标,但不建议这样做,因为您没有利用强大的功能和可扩展性。

【讨论】:

我不确定你是否理解我的问题。我只有一个队列工作者,这是故意的,因为它处理的工作相当大,我不想让服务器超载。问题是它同时运行所有作业,而不是等待每个作业完成,然后再开始下一个作业。 您为工作设置的 TTR(解决时间)是多少。默认值通常为 60 秒,如果您的工作人员没有完成,beantalkd 服务器会将相同的工作分配给另一个工作人员实例。

以上是关于Beanstalkd 在伪造队列工作人员上同时运行队列中的所有作业的主要内容,如果未能解决你的问题,请参考以下文章

Beanstalkd工作队列

使用Beanstalkd实现队列

Laravel 队列与 beanstalkd 和 redis 重复

ini Beanstalkd队列工作者

Beanstalkd 消息队列

在同一台服务器上分离beanstalkd队列