运行工匠队列:使用其他参数

时间:2016-02-12 17:23:18

标签: laravel laravel-5.1 supervisord artisan

我正在尝试运行排队的作业,并通过命令行传递其他参数。我的用例是:

我通过主管有4个正在运行的queue:work进程。我队列中的作业都需要访问代理服务器,通过代理服务器,我只能在任何给定时间运行4个进程。当我启动排队作业时,我必须找到当前未使用的进程号(1到4),然后通过该进程运行我的命令。

我一直在使用数据库表来存储流程,它有一个in_use列,可以跟踪它是否被使用,但我看到的问题是两个{{1} }命令同时运行,可以从数据库中为两者选择相同的代理进程。

我想要什么

queue:work

然后以某种方式检索作业中的那个参数,这样我就可以分别在主管中运行我的4个进程。

作为一种解决方法,我创建了一个自定义artisan命令,它将接受参数,但我失去了队列功能。我不想开发自定义队列流程。

有没有办法传递这个论点?或者,有没有办法让我可以从我的自定义工匠命令中弹出作业,然后手动运行而不是通过php artisan queue:work --process=1

1 个答案:

答案 0 :(得分:2)

问题可以通过使用专用队列来解决。因此,每个队列都附加了一个特定的代理进程。剩下的唯一事情是创建一个函数/进程来确定进程应该进入哪个队列。

https://laravel.com/docs/5.1/queues#pushing-jobs-onto-the-queue

检查部分:指定作业的队列