laravel queue java_Laravel队列(queue)应用

应用场景:会员注册成功后,会给用户发送邮件及短信通知,按文档介绍,app/Jobs下应该会有Email.php和Sms.php两个类文件,分别实现邮件和短信通知。

而其实,这两个通知已经有现成的方法实现了,现在要做得是,队列里去分别调用即可。

数据库:

要使用 database 这个队列驱动的话,则需要创建一个数据表来记住任务,你可以用 queue:table 这个 Artisan 命令来创建这个数据表的迁移。当迁移建好后,就可以用 migrate 这个命令来创建数据表。

php artisan queue:table

php artisan migrate

实现方法:创建一个回调任务类Callback.php,该类代码如下:

use Illuminate\Queue\SerializesModels;

use Illuminate\Queue\InteractsWithQueue;

use Illuminate\Contracts\Bus\SelfHandling;

use Illuminate\Contracts\Queue\ShouldQueue;

/**

* Class Callback

* @package App\Jobs

*/

class Callback implements SelfHandling, ShouldQueue

{

use InteractsWithQueue, SerializesModels;

/**

* @var string 回调方法

*/

private $callback;

/**

* @var array 回调参数

*/

private $paramArr = [];

/**

* Create a new command instance.

*

* @param string $callback 回调方法

* @param array $paramArr 回调参数

*/

public function __construct($callback, array $paramArr = [])

{

$this->callback = $callback;

$this->paramArr = $paramArr;

}

/**

* Execute the command.

*

* @return void

*/

public function handle()

{

// 执行回调方法

$result = call_user_func_array($this->callback, $this->paramArr);

}

}

使用方法:

public function postRegistrar($request) {

// 注册代码

// 发送邮件

$emailJobId = Queue::push(new Callback(Email::class.'::send', [$email]));

// 发送短信

$smsJobId = Queue::push(new Callback(Sms::class.'::send', [$mobile]));

}

延迟队列怎么写?

$emailJobId = Queue::later(60, new Callback(Email::class.'::send', [$email]));

最后启动队列侦听器:

php artisan queue:listen

是不是用起来方便多了?

f25b49c77ea4aa1d273601e274424f47.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值