异步发送应用部署通知


今天我们讨论的主题是在应用部署成功后发送通知给关联用户。

应用部署后发送通知

不同用户可能会使用不同的通知接收工具,有些使用邮件,有些使用 Slack、Telegram 等。

编写发送通知任务类的 handle 方法代码如下:

取决于团队的大小和通知的优先级,发送所有通知是很耗时的,此外,如果服务挂掉,在指定通道发送的通知也会失败。

为了避免应用部署任务执行完毕后发送通知的操作延迟部署队列中的其他任务执行,我们将通知放到队列中执行,而不是直接发送。这样做的另一个好处是方便通知发送失败的异常处理,只要将通知任务重试,而不会影响已发布成功的应用正常运行。

将通知发送推送到队列

和队列化监听器一样,我们也可以在通知类上实现 ShouldQueue 接口来告知 Laravel 将发送通知操作推送到消息队列:

这样一来,每个用于发送通知到不同通道的独立任务就会被推送到队列,如果我们要通过邮件和 Slack 发送通知给 3 个开发者,就会推送 6 个任务到队列。

如果任意一个通知发送失败,它们就会像普通队列任务那样,被多次重试直到成功或者报告错误信息。

当然,我们也可以在通知类中定义队列配置:

还可以通过 middleware 方法定义队列中间件:

使用可邮寄类

如果只发送邮件通知,使用可邮寄类更方便,队列化邮件发送和队列化通知发送一样,需要在可邮寄类上实现 ShouldQueue 接口告知 Laravel 通过消息队列发送邮件,你也可以在其中定义队列配置。


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: 通过事件监听器异步发放优惠券

>> 下一篇: 选择正确的 CPU 和内存配置