微调
This commit is contained in:
@@ -50,10 +50,10 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
|
||||
}
|
||||
|
||||
// 最大尝试次数
|
||||
private static final int MAX_ATTEMPTS = 3;
|
||||
private static final int MAX_ATTEMPTS = 4;
|
||||
|
||||
// 当前尝试次数
|
||||
private static int attemptCount = 0;
|
||||
private static int attemptCount = 1;
|
||||
|
||||
/**
|
||||
* 针对redis数据失效事件,进行数据处理
|
||||
@@ -76,8 +76,9 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
|
||||
|
||||
//主任务
|
||||
private void executeMainTask(ScheduledExecutorService scheduler, String nDid, String version) {
|
||||
System.out.println("正在执行主任务...");
|
||||
DeviceLogDTO logDto = new DeviceLogDTO();
|
||||
logDto.setUserName("装置掉线触发");
|
||||
logDto.setUserName("装置失去心跳触发");
|
||||
logDto.setOperate(nDid + "重连");
|
||||
//装置下线
|
||||
csEquipmentDeliveryService.updateRunStatusBynDid(nDid, AccessEnum.OFFLINE.getCode());
|
||||
@@ -85,11 +86,10 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
|
||||
csDeviceService.devAccessAskTemplate(nDid,version,1);
|
||||
Integer status = csEquipmentDeliveryService.queryEquipmentBynDid(nDid).getRunStatus();
|
||||
if (Objects.equals(status,AccessEnum.ONLINE.getCode())){
|
||||
scheduler.shutdown();
|
||||
logDto.setResult(1);
|
||||
scheduler.shutdown();
|
||||
} else {
|
||||
logDto.setResult(0);
|
||||
logDto.setFailReason("心跳结束重连失败,启动第一个定时任务");
|
||||
startScheduledTask(scheduler,nDid,version);
|
||||
}
|
||||
csLogsFeignClient.addUserLog(logDto);
|
||||
@@ -99,30 +99,31 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
|
||||
private void startScheduledTask(ScheduledExecutorService scheduler, String nDid, String version) {
|
||||
ScheduledFuture<?> future = scheduler.scheduleAtFixedRate(() -> {
|
||||
DeviceLogDTO logDto = new DeviceLogDTO();
|
||||
logDto.setUserName("装置掉线第一次定时任务");
|
||||
logDto.setOperate(nDid + "第一阶段重连定时任务");
|
||||
if (attemptCount < MAX_ATTEMPTS) {
|
||||
System.out.println(nDid + "执行第一阶段重连定时任务,第 " + attemptCount + " 次尝试...");
|
||||
attemptCount++;
|
||||
logDto.setOperate(nDid + "执行第一次定时任务,第 " + attemptCount + " 次尝试...");
|
||||
csDeviceService.devAccessAskTemplate(nDid,version,attemptCount);
|
||||
int status = csEquipmentDeliveryService.queryEquipmentBynDid(nDid).getRunStatus();
|
||||
if (Objects.equals(status,AccessEnum.ONLINE.getCode())){
|
||||
logDto.setResult(1);
|
||||
scheduler.shutdown();
|
||||
} else {
|
||||
logDto.setResult(0);
|
||||
startSecondScheduledTask(scheduler,nDid,version);
|
||||
}
|
||||
} else {
|
||||
attemptCount++;
|
||||
logDto.setResult(0);
|
||||
startSecondScheduledTask(scheduler,nDid,version);
|
||||
}
|
||||
csLogsFeignClient.addUserLog(logDto);
|
||||
}, 0, 60, TimeUnit.SECONDS);
|
||||
}, 0, 5, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
//启动第二个定时任务
|
||||
private void startSecondScheduledTask(ScheduledExecutorService scheduler, String nDid, String version) {
|
||||
ScheduledFuture<?> future = scheduler.scheduleAtFixedRate(() -> {
|
||||
System.out.println(nDid + "执行第二阶段重连定时任务...");
|
||||
DeviceLogDTO logDto = new DeviceLogDTO();
|
||||
logDto.setUserName("装置掉线第二次定时任务");
|
||||
logDto.setOperate(nDid + "执行第二次定时任务");
|
||||
logDto.setOperate(nDid + "第二阶段重连定时任务");
|
||||
csDeviceService.devAccessAskTemplate(nDid,version,attemptCount++);
|
||||
int status = csEquipmentDeliveryService.queryEquipmentBynDid(nDid).getRunStatus();
|
||||
if (Objects.equals(status,AccessEnum.ONLINE.getCode())) {
|
||||
@@ -132,6 +133,6 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene
|
||||
logDto.setResult(0);
|
||||
}
|
||||
csLogsFeignClient.addUserLog(logDto);
|
||||
}, 0, 600, TimeUnit.SECONDS);
|
||||
}, 0, 10, TimeUnit.SECONDS);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user