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