任务的异步执行通常用两种方式:
- 消息
- 定时任务
在分布式场景下,消息,分布式定时任务这类第三方中间件,并不能保证消息或任务一定会被消费或者执行。
我们要做的,就是尽力避免遗漏消息或者任务。
编码过程中,按照以下三步骤进行。
1.落地数据,发送消息
2.消息接收-处理
3.定时任务补偿
@startuml
start
:获取落地数据;
:逻辑处理;
if (处理结果) then (成功)
:删除落地数据;
end
else (失败)
:记录执行次数;
:是否要告警;
endif
stop
@enduml