|
|
@ -30,25 +30,33 @@ public class TrackRetryService {
|
|
|
|
@Async("recordMessage")
|
|
|
|
@Async("recordMessage")
|
|
|
|
@Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000L, multiplier = 1.5))
|
|
|
|
@Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000L, multiplier = 1.5))
|
|
|
|
public void doRetry(TaskMessage message) throws Exception {
|
|
|
|
public void doRetry(TaskMessage message) throws Exception {
|
|
|
|
TaskMessageRetryLog taskMessageRetryLog = new TaskMessageRetryLog();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(message, taskMessageRetryLog);
|
|
|
|
TaskMessageRetryLog taskMessageRetryLog = beforeProcess(message);
|
|
|
|
taskMessageRetryLog.setMessageId(message.getId());
|
|
|
|
|
|
|
|
taskMessageRetryLog.setId(idService.getDateSeq());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
IJobHandler jobHandler = TrackRetrySpringExecutor.loadJobHandler(message.getRetryKey());
|
|
|
|
IJobHandler jobHandler = TrackRetrySpringExecutor.loadJobHandler(message.getRetryKey());
|
|
|
|
String name = ((MethodJobHandler) jobHandler).getMethod().getParameterTypes()[0].getName();
|
|
|
|
String name = ((MethodJobHandler) jobHandler).getMethod().getParameterTypes()[0].getName();
|
|
|
|
Object o = JSON.fromJSON(message.getJsonStr(), Class.forName(name));
|
|
|
|
Object o = JSON.fromJSON(message.getJsonStr(), Class.forName(name));
|
|
|
|
jobHandler.execute(o);
|
|
|
|
jobHandler.execute(o);
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
log.error(e.getMessage(), e);
|
|
|
|
log.error(e.getMessage(), e);
|
|
|
|
|
|
|
|
afterThrowingProcess(ExceptionUtils.getExceptionMessage(e), taskMessageRetryLog);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
taskMessageRetryLog.setErrorMsg(ExceptionUtils.getExceptionMessage(e));
|
|
|
|
taskMessageRetryLogDao.save(taskMessageRetryLog);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void afterThrowingProcess(String errorMsg, TaskMessageRetryLog taskMessageRetryLog) {
|
|
|
|
|
|
|
|
taskMessageRetryLog.setErrorMsg(errorMsg);
|
|
|
|
taskMessageRetryLog.setState(StateEnum.FAIL);
|
|
|
|
taskMessageRetryLog.setState(StateEnum.FAIL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
taskMessageRetryLogDao.save(taskMessageRetryLog);
|
|
|
|
private TaskMessageRetryLog beforeProcess(TaskMessage message) {
|
|
|
|
|
|
|
|
TaskMessageRetryLog taskMessageRetryLog = new TaskMessageRetryLog();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(message, taskMessageRetryLog);
|
|
|
|
|
|
|
|
taskMessageRetryLog.setMessageId(message.getId());
|
|
|
|
|
|
|
|
taskMessageRetryLog.setId(idService.getDateSeq());
|
|
|
|
|
|
|
|
return taskMessageRetryLog;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|