노승철
2 years ago
8 changed files with 132 additions and 86 deletions
@ -0,0 +1,40 @@
|
||||
package com.palnet.comn.model; |
||||
|
||||
import org.springframework.stereotype.Component; |
||||
|
||||
import java.util.List; |
||||
import java.util.Map; |
||||
import java.util.concurrent.ConcurrentHashMap; |
||||
|
||||
@Component |
||||
public class GPHistoryShareContext { |
||||
|
||||
/* |
||||
* GPS Data History ( Websocket <-> Client Data Share ) |
||||
* key : 식별 장치 번호 |
||||
* Value : History Object |
||||
* |
||||
* */ |
||||
|
||||
private final Map<String, CtrCntrlModel> maps; |
||||
|
||||
public GPHistoryShareContext() { |
||||
this.maps = new ConcurrentHashMap<>(); |
||||
} |
||||
|
||||
public void putHistory(String key, CtrCntrlModel value) { |
||||
this.maps.put(key, value); |
||||
} |
||||
|
||||
public CtrCntrlModel getHistory(String key) { |
||||
return this.maps.get(key); |
||||
} |
||||
|
||||
public void removeHistory(String key) { |
||||
this.maps.remove(key); |
||||
} |
||||
|
||||
public Map<String, CtrCntrlModel> getAllHistory() { |
||||
return this.maps; |
||||
} |
||||
} |
@ -0,0 +1,38 @@
|
||||
package com.palnet.process.scheduler; |
||||
|
||||
import com.palnet.comn.model.CtrCntrlModel; |
||||
import com.palnet.comn.model.GPHistoryShareContext; |
||||
import com.palnet.comn.utils.DateUtils; |
||||
import org.springframework.scheduling.annotation.Scheduled; |
||||
import org.springframework.stereotype.Component; |
||||
|
||||
import java.util.Date; |
||||
import java.util.List; |
||||
import java.util.Map; |
||||
|
||||
@Component |
||||
public class GpHistoryScheduler { |
||||
|
||||
private final int timeLimit = 5; |
||||
private final GPHistoryShareContext gpHistoryShareContext; |
||||
|
||||
public GpHistoryScheduler(GPHistoryShareContext gpHistoryShareContext) { |
||||
this.gpHistoryShareContext = gpHistoryShareContext; |
||||
} |
||||
|
||||
@Scheduled(fixedDelay = 1000 * 60 * 5) |
||||
public void removeHistory() { |
||||
Map<String, CtrCntrlModel> allHistory = gpHistoryShareContext.getAllHistory(); |
||||
|
||||
// Key 의 존재하는 데이터는 마지막 서버수신 History Data
|
||||
allHistory.forEach((k, v) -> { |
||||
Date serverRcvDt = DateUtils.stringToDate(v.getServerRcvDt()); |
||||
long diffMinute = DateUtils.diffMinute(serverRcvDt, new Date()); |
||||
|
||||
if(diffMinute > timeLimit) { |
||||
gpHistoryShareContext.removeHistory(k); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue