如何让 Laravel 5.4 使用 AWS SQS 队列

How to get Laravel 5.4 working with AWS SQS Queues

我正在使用 Laravel 5.4 和 SQS Fifo 队列。

我似乎无法让它与我的 SQS Fifo 队列一起工作。排队我的电子邮件作业。

任何有这方面经验的人都可以为我指明如何 laravel 使用我的 SQS Fifo 队列的正确方向。

这是我将作业添加到队列的控制器代码:

(new ReferFriendEmail($referFriendObj))->onConnection('my_sqs_fifo');

这是我的工作代码:

class ReferFriendEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $referFriendObj = false;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($referFriendObj)
    {
        $this->referFriendObj = $referFriendObj;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle(  )
    {
        $input = $this->referFriendObj->input;

        Mail::send( 'emails.refer-a-friend', 
            [
                'user' => $this->referFriendObj->from_user_info,
                'first_name' => strtoupper( trim( $this->referFriendObj->from_user_info->first_name)),
                'unique_link' => $this->referFriendObj->unique_link,
            ],
            function ($m) use ( $input ) {
                    $m->from('ryan_hughes_smith@live.co.uk', 'Kuflink');
                    $m->to($input['to_email'], $input['to_email'] )->subject( "You've been referred to Kuflink by " . $input['first_name'] );
            }
        );

        Email_user_referrer::where('email' , $input['to_email'])
                            ->update(['flag_email_sent' => 1]);
    }
}

似乎没有任何事情发生。我用它作为驱动程序。

根据评论,您正在创建 工作,但实际上并没有发送 工作。 dispatch 助手 does this for you:

$job = (new ReferFriendEmail($referFriendObj))->onConnection('my_sqs_fif‌​o');
dispatch($job);