gtsoft-snail-job-demo/src/main/java/com/example/snailjob/customized/OrderCompleteCallback.java

58 lines
2.3 KiB
Java
Raw Normal View History

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;
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) {
// 重试成功后删除失败表中的数据
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(
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) {
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());
}
}