实现最大努力通知关键点:
1,当主业务已处理完成则发送异步事件、告知 通知服务。
2,通知服务消费到消息后先落地到数据库做记录。数据库字段大概有:已通知次数、最大通知次数,通知规则表达式、最后通知时间,状态等。
3.通知服务落地到数据库后,将通知任务放入delayQueue中,执行时间由最后通知时间和通知规则得到。
4,如果通知任务用http请求下游服务(这里失败有两种,一种是网络请求失败--请求头得出。另一种是被通知方没有返回成功flag)失败则根据情况更新数据库信息。并确定是否再次将任务放入到delayQueue中(根据最大通知次数)。
5。每次通知后都要将本次通知记录到数据库中方便以后查看。