发送 Webhook
除了邮件发送和定时任务调度外,我们还可以通过消息队列异步对第三方服务发起网络请求,就像 JavaScript 中的 Ajax 那样,进行跨应用的消息推送。一个比较典型的场景就是通过发送 Webhook 实现异步回调通知。
我们创建一个队列任务类 SendWebhook
用于执行 Webhook 的发送工作,在 handle
方法中,通过 Laravel 自带的 HTTP 客户端发送包含事件数据的 POST 请求到给定 URL 作为 Webhook,URL 对应应用收到这个请求后,再进行后续处理工作:
这里,我们还设置了请求的超市时间是 5s,超过这个时间没有收到对方应用的响应,则认为请求超时。
接下来,就可以通过如下方式在控制器方法中将 SendWebhook
任务推送到消息队列异步处理了,在推送时将第三方服务和事件实例作为参数传递进来,以便在处理任务时使用:
请求失败后重试
既然是 HTTP 网络请求,那么就有可能因为各种原因导致请求失败&