我已經使用流明創建了一個新項目,負責發送電子郵件和其他一些小任務。但是,對於需要發送的一些電子郵件,我想使用Amazon的隊列。流明5.1 SQS隊列配置
在Lumen的文檔中,他們唯一提到的是: .env文件中的QUEUE_DRIVER選項決定了應用程序將使用的隊列「驅動程序」。
我已經將此設置爲SQS建議,但是我對實際的亞馬遜證書有點困惑。我該如何定義這些?我見過的唯一「相關」東西來自亞馬遜的文檔here和here。我還安裝了「aws/aws-sdk-php」:「〜3.0」包。
但是,這些資源是指直接使用SQS的API。我希望能夠調用Lumen中描述的隊列,如Queue::push()
或$this->dispatch()
。
下面是我的相關代碼。
這是我.ENV文件
QUEUE_DRIVER=sqs
AWS_KEY=key
AWS_SECRET=secretstuff
AWS_QUEUE=https://sqs.eu-west-1.amazonaws.com/
AWS_REGION=eu-west-1
這是我的控制器
<?php namespace App\Http\Controllers;
use App\Jobs\GuestEmailJob;
use Laravel\Lumen\Routing\Controller as BaseController;
use Log, Queue;
use Aws\Sqs\SqsClient;
class NotificationEmailController extends BaseController
{
public function pushToQueue($id)
{
Queue::push(new GuestEmailJob($id));
//$this->dispatch(new GuestEmailJob($id));
}
}
最後,這是我的工作
<?php namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldQueue;
use Log;
abstract class GuestEmailJob implements SelfHandling, ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels;
public function handle($id)
{
Log::info('within handle');
$user = User::find($id);
}
}
我和Queue::push
試過兩和$this->dispatch()
。當請求到達控制器時,一切都很順利,直到推入隊列,然後什麼也沒有發生(也沒有例外)。任何人都有任何想法我做錯了/失蹤?
然後將其添加到您的app.php文件中:'$ app-> configure('queue');':) –