Laravel 5.6。将状态附加到队列工作器

时间:2018-09-27 09:39:39

标签: php laravel laravel-5.6 laravel-queue

是否可以通过某种方式将状态附加到队列工作器。

例如

queue:work --on-account=some@mail.com

,然后在作业中使用此--on-account变量。

基本思想是,由于某些限制,我每个帐户只能有一个工作人员。而且它永远不会改变。因此,唯一的扩展方式是添加更多帐户。

每个作业都可以使用任何帐户进行处理。

我会接受

  

由于XYZ,这是不可能的。使用此技术可获得相同的结果。

也可以作为答案。

P.S。

这不是Running artisan queue:work with additional arguments的重复项,因为他的答案不适合我的情况。

1 个答案:

答案 0 :(得分:2)

如何使用env vars?

您将按照以下方式运行队列:

export ACCOUNT="some@email";php artisan queue:work 然后,在工作人员中

$account getenv('ACCOUNT');

另一个想法可能是使用连接功能:

https://laravel.com/docs/5.7/queues#running-the-queue-worker

报价

  

您还可以指定工作者应使用哪个队列连接。传递给work命令的连接名称应与config / queue.php配置文件中定义的连接之一相对应:

     

php artisan队列:redis工作

     

您可以通过仅处理给定连接的特定队列来进一步自定义队列工作器。例如,如果在redis队列连接上的电子邮件队列中处理了所有电子邮件,则可以发出以下命令来启动仅处理该队列的工作程序:

     

php artisan队列:redis工作--queue =电子邮件

至少就laravel而言,这可能是最干净的解决方案。 除非我错过了真正的问题。