2024-04-16 15:03:52 +08:00
|
|
|
package com.example.snailjob.customized;
|
2023-09-02 17:24:47 +08:00
|
|
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
2025-02-18 23:22:11 +08:00
|
|
|
import com.aizuda.snailjob.client.core.callback.complete.RetryCompleteCallback;
|
2024-04-16 15:03:52 +08:00
|
|
|
import com.aizuda.snailjob.common.core.util.JsonUtil;
|
2023-09-13 23:42:23 +08:00
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
2024-04-16 15:03:52 +08:00
|
|
|
import com.example.snailjob.dao.FailOrderBaseMapper;
|
|
|
|
import com.example.snailjob.po.FailOrderPo;
|
|
|
|
import com.example.snailjob.vo.OrderVo;
|
2023-09-02 17:24:47 +08:00
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
@Component
|
|
|
|
public class OrderCompleteCallback implements RetryCompleteCallback {
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private FailOrderBaseMapper failOrderBaseMapper;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 重试成功后的回调函数
|
|
|
|
* 参数1-场景名称
|
|
|
|
* 参数2-执行器名称
|
|
|
|
* 参数3-入参信息
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
public void doSuccessCallback(String sceneName, String executorName, Object[] objects) {
|
|
|
|
// 重试成功后删除失败表中的数据
|
2023-09-13 23:42:23 +08:00
|
|
|
OrderVo orderVo = JsonUtil.parseObject(JsonUtil.toJsonString(objects[1]), OrderVo.class);
|
2023-09-02 17:24:47 +08:00
|
|
|
log.info("远程重试成功,场景{},执行器{},参数信息",sceneName,executorName, JSONUtil.toJsonStr(objects));
|
|
|
|
failOrderBaseMapper.delete(
|
2023-09-13 23:42:23 +08:00
|
|
|
new LambdaQueryWrapper<FailOrderPo>()
|
2023-09-02 17:24:47 +08:00
|
|
|
.eq(FailOrderPo::getOrderId,orderVo.getOrderId())
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 重试达到最大次数后的回调函数
|
|
|
|
* 参数1-场景名称
|
|
|
|
* 参数2-执行器名称
|
|
|
|
* 参数3-入参信息
|
|
|
|
*/
|
|
|
|
@Override
|
|
|
|
public void doMaxRetryCallback(String sceneName, String executorName, Object[] objects) {
|
2023-09-13 23:42:23 +08:00
|
|
|
OrderVo orderVo = JsonUtil.parseObject(JsonUtil.toJsonString(objects[1]), OrderVo.class);
|
2023-09-02 17:24:47 +08:00
|
|
|
log.info("远程重试达到最大限度,场景{},执行器{},参数信息",sceneName,executorName, JSONUtil.toJsonStr(objects));
|
|
|
|
// 重试失败后插入订单失败信息
|
|
|
|
failOrderBaseMapper.insert(FailOrderPo.builder()
|
|
|
|
.orderId(orderVo.getOrderId())
|
|
|
|
.sourceId(orderVo.getSource())
|
|
|
|
.sceneName(sceneName)
|
|
|
|
.executorName(executorName)
|
|
|
|
.args(JSONUtil.toJsonStr(objects))
|
|
|
|
.build());
|
|
|
|
}
|
|
|
|
}
|