Laravel使用数据库队列给用户发送通知
应用场景
系统通知模块的功能是后台发送一个系统通知给所有人或者是给一个人。
比如在8月8号发送一个系统通知:
恭喜你看到了我的博客。那么每一个人都会收到这个通知,但是如果是8月9号注册进来的人就不会收到这个通知。
这个时候,这种通知必须是分发的,每个人都需要有一条记录来保存所分发的通知,所以这是一个分发的逻辑。
使用同步还是异步来分发。
比如要是群发的话,需要工作人员在后台点击发布按钮就同步发送通知到用户的通知箱呢?
还是异步使用队列来做这个事情,当然选择异步更加稳妥。它能防止一个请求比较慢的情况,运营人员点击发布按钮之后,会直接告诉运营人员你已经通知成功,但实际上在后台,我们会使用另外一个脚本来把这个通知一个一个地发送给用户,这个就是一个异步的场景,用户体验比较好了。而且在用户量比较大的情况下,必须使用异步的这种设计方案。
一般来说,异步就要使用到队列。一说到队列,很多人就会想到redis之类的,redis是实现队列的非常好的方式,但是并不是只有redis能实现队列,我们这里演示数据库在laravel中做队列的方式,其实在laravel中,它不管队列是使用redis还是MySQL来实现,只需要改一个配置文件即可,在业务逻辑上是没有区别的。