排队的作业偶尔会重复自己Laravel Beanstalkd

时间:2019-05-08 17:57:40

标签: laravel laravel-5.1 beanstalkd

有时,如果一项作业滞留在长时间运行的作业后面的队列中,则似乎多次被拾取/尝试,导致重复发送电子邮件。我减小了每个作业的大小,并添加了多个队列,以加快作业的分发速度。我相信我应该在某个地方添加$ job-> delete(),但不确定应该在哪里。

我创建了多个队列并分批传递了作业,以确保没有进程运行时间过长或阻止其他进程运行。

这是我的* .conf文件的样子(supervisord)

[program:lorem]
process_name=%(program_name)s_%(process_num)02d
command=php artisan queue:listen --queue=high,medium,low --sleep=30 --tries=1 --timeout=3600
directory=/var/www/html/lorem
autostart=true
autorestart=true
numprocs=6
redirect_stderr=true
stdout_logfile=/var/www/html/lorem/storage/logs/ipsum.log

这是我将作业分配到队列的示例:

    foreach ($users->chunk(100) as $chunkUser)
    {
        $job = (new InviteVendors($request, $chunkUser))->onQueue('high');
        app('Illuminate\Contracts\Bus\Dispatcher')->dispatch($job);
    }


    $emailAgent = (new EmailAgentPostInvite($request))->onQueue('invitequeue');
    app('Illuminate\Contracts\Bus\Dispatcher')->dispatch($emailAgent);

如果我在派发$ job-> delete()之后调用它,是否可以确保未多次提取该作业?如果没有,我应该在哪里尝试删除作业?

0 个答案:

没有答案