1、配置使用redis队列
-
config/queue.php
有一个connections
配置选项。这个选项给 Amazon SQS,Beanstalk,或者 Redis 这样的后端服务定义了一个特有的连接. -
.env
- QUEUE_CONNECTION 队列驱动
- REDIS_QUEUE
2、生成队列文件
根目录执行php artisan make:job SendSms
,这时在app目录下会生成Jobs/SendSms.php
3、编写队列代码
打开SendSms.php
在handle
方法下入入如下代码:
<?php
namespace App\Jobs;
use App\Lib\Sms\PrimeCareSms;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Log;
class SendSms implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $sms;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($sms)
{
$this->sms = $sms;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$mobile = $this->sms['mobile'];
switch ($this->sms['type']) {
case 1: //发货通知
$template_id = '781597';
$template_param = $this->sms['template_param'];
break;
case 2: //退货通知
$template_id = '781683';
$template_param = [];
break;
}
Log::channel('sms')->info('success');
// PrimeCareSms::getInstance()->send($this->sms['basic_uid'], $mobile, $template_id, $template_param);
}
}
4、启动队列监听
根目录执行
php artisan queue:work
5、控制器调用队列
SendSms::dispatch($job)->onQueue('helper');