我试图延迟 Laravel 中被分派到 AWS SQS 队列的作业。未延迟的标准作业在该队列上运行良好,但一旦我延迟某些东西,它就会崩溃。我第一次尝试:
$awsgatewayjob = new \App\Jobs\DispatchAwsGatewayJob();
$this->dispatch($awsgatewayjob)->delay(now()->addMinutes(1));
这会产生错误: Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR) Call to a member function delay() on string
接下来,我尝试使用 Laravel 在手册中解释的样式:
DispatchAwsGatewayJob::dispatch()->delay(now()->addMinutes(1));
这给出了错误:
Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR) 调用未定义的方法 Maqe\LaravelSqsFifo\SqsFifoQueue::getSeconds()
我用谷歌搜索了最后一个错误,我很高兴地报告我不是唯一遇到该错误的人:https ://github.com/maqe/laravel-sqs-fifo/issues/7
无论如何,我不明白。我在 Laravel 5.5 上运行,并使用 composer update 更新了我的所有包,以确保我没有使用过时的包。
有任何想法吗?
这是该作业的(编辑的)代码:
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Auth;
use Session;
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
use Alert;
class DispatchAwsGatewayJob implements ShouldQueue
{
private $method;
private $rest_method;
private $data;
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($method, $rest_method, $data)
{
$this->method = $method;
$this->rest_method = $rest_method;
$this->data = $data;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$curl = curl_init();
// some more stuff here to config $curl
$result = curl_exec($curl);
curl_close($curl);
}
}
这是完整的错误日志:
Symfony\Component\Debug\Exception\FatalThrowableError 抛出消息“调用未定义的方法 Maqe\LaravelSqsFifo\SqsFifoQueue::getSeconds()”
堆栈跟踪:
0 Symfony\Component\Debug\Exception\FatalThrowableError 在 /var/www/sparkwebsite/vendor/maqe/laravel-sqs-fifo/src/SqsFifoQueue.php:42
这是完整的堆栈跟踪。我现在使用标准队列,一切运行良好!