如何让Laravel 5.4使用AWS SQS队列

时间:2017-07-05 14:22:34

标签: php laravel amazon-web-services amazon-sqs

我正在使用带有SQS Fifo队列的Laravel 5.4。

我似乎无法使用我的SQS Fifo Queue。排队我的电子邮件工作。

任何有此经验的人都可以指出我如何使用我的SQS Fifo Queue进行laravel工作。

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

(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]);
    }
}

似乎没什么可以去的。我用它作为驱动程序。

1 个答案:

答案 0 :(得分:4)

根据评论,您创建作业,但您实际上发送dispatch助手does this for you

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