发送 Webhook 实现跨应用异步回调

发送 Webhook

除了邮件发送和定时任务调度外,我们还可以通过消息队列异步对第三方服务发起网络请求,就像 JavaScript 中的 Ajax 那样,进行跨应用的消息推送。一个比较典型的场景就是通过发送 Webhook 实现异步回调通知。

SendWebhookhandle

这里,我们还设置了请求的超市时间是 5s,超过这个时间没有收到对方应用的响应,则认为请求超时。

SendWebhook

请求失败后重试

$response
SendWebhooktriesattempts

之所以将延迟时间设置这么长,因为 HTTP 请求的响应时间是不可控的,而且如果一两次请求失败可能是网络抖动,但多次请求失败则很可能是服务已经不可用了(网络断开、服务器宕机、服务崩溃等),这个时候,频繁重试反而会浪费系统的资源,增加系统负载。

配置任务过期

以上任务推送、异步处理和失败重试都是自动进行的,诚如我们上面所说,如果是第三方服务确实不可用,再多次的重试也是徒劳的,只会毫无意义地增加系统资源的空耗(每执行一次任务需要消耗当前机器的 CPU 和内存资源)。

retryUtil

这种情况下,通常还需要配合将最大尝试次数设置为无限重试:

retryUtil

处理任务失败

failed