【问题标题】:Laravel Queues with AWS SQS. How do I run just one job per queue?Laravel 队列与 AWS SQS。如何每个队列只运行一项作业?
【发布时间】:2015-06-07 08:10:06
【问题描述】:

我是 Laravel 队列的新手,刚刚构建了一个这样的测试代码:

class TestController extends Controller {

public function testQueue2()
{
    Queue::push('QueueController@fire', array('id' => 114));
}

队列任务是:

class QueueController extends Controller {

public function fire($job, $data)
{
    Log::info('This is some useful information.'.$data['id']);
}

比我点击 URL 来运行队列测试。 SQS 运行良好,我的服务器日志得到这些信息:

[2015-06-07 15:53:04] production.INFO:这是一些有用的信息。114 [] []

[2015-06-07 15:53:36] production.INFO:这是一些有用的信息。114 [] []

[2015-06-07 15:53:37] production.INFO:这是一些有用的信息。114 [] []

[2015-06-07 15:54:09] production.INFO:这是一些有用的信息。114 [] []

[2015-06-07 15:54:10] production.INFO:这是一些有用的信息。114 [] []

[2015-06-07 15:54:42] production.INFO:这是一些有用的信息。114 [] []

我希望队列任务只执行一次,而不是6次,我该怎么做?

谢谢。

【问题讨论】:

    标签: laravel queue amazon-sqs


    【解决方案1】:

    我假设您为此使用 Laravel 4.2。来自文档:

    push 方法的第一个参数是用于处理作业的类的名称

    我认为如果不想使用 Job 类的fire 方法,只需要指定使用的方法即可。

    换句话说,尝试将您的代码修改为:

    Queue::push('QueueController', array('id' => 114));
    

    让你的 Controller 成为这个作业执行的实现者也有点奇怪,但那是另一回事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-21
      • 2016-09-09
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2018-08-16
      相关资源
      最近更新 更多