Browse Source

multi consumer 설정

master
노승철 2 years ago
parent
commit
2120441166
  1. 10
      src/main/java/com/palnet/process/message/consumer/MessageConsumer.java
  2. 25
      src/main/java/com/palnet/process/scheduler/GpHistoryScheduler.java
  3. 17
      src/main/java/com/palnet/server/task/ctr/service/CtrCntrlTaskService.java
  4. 6
      src/main/resources/application.yml

10
src/main/java/com/palnet/process/message/consumer/MessageConsumer.java

@ -12,7 +12,6 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
@Component @Component
@ -40,7 +39,6 @@ public class MessageConsumer {
} }
public CtrCntrlModel modelConvert(final GPDatabaseModel dataInfo) { public CtrCntrlModel modelConvert(final GPDatabaseModel dataInfo) {
// List<CtrCntrlModel> list = new ArrayList<>();
CtrCntrlModel model = new CtrCntrlModel(); CtrCntrlModel model = new CtrCntrlModel();
model.setObjectId(dataInfo.getObjectId()); model.setObjectId(dataInfo.getObjectId());
@ -69,14 +67,6 @@ public class MessageConsumer {
model.setSensorO3(dataInfo.getSensorO3()); model.setSensorO3(dataInfo.getSensorO3());
model.setSensorDust(dataInfo.getSensorDust()); model.setSensorDust(dataInfo.getSensorDust());
// list.add(model);
//=== 정렬 처리 ==
//기준 : 관제 시작일이 가장 느린순으로 상단에 올린다.
// list.sort(Comparator.reverseOrder());
// return list;
return model; return model;
} }
} }

25
src/main/java/com/palnet/process/scheduler/GpHistoryScheduler.java

@ -9,30 +9,35 @@ import org.springframework.stereotype.Component;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
@Component @Component
public class GpHistoryScheduler { public class GpHistoryScheduler {
private final int timeLimit = 5; private final int timeLimit = 10;
private final GPHistoryShareContext gpHistoryShareContext; private final GPHistoryShareContext gpHistoryShareContext;
public GpHistoryScheduler(GPHistoryShareContext gpHistoryShareContext) { public GpHistoryScheduler(GPHistoryShareContext gpHistoryShareContext) {
this.gpHistoryShareContext = gpHistoryShareContext; this.gpHistoryShareContext = gpHistoryShareContext;
} }
@Scheduled(fixedDelay = 1000 * 60 * 5) /* Client 노출 시간 Test 10초 */
@Scheduled(fixedDelay = 1000 * 10)
public void removeHistory() { public void removeHistory() {
Map<String, CtrCntrlModel> allHistory = gpHistoryShareContext.getAllHistory(); Map<String, CtrCntrlModel> allHistory = gpHistoryShareContext.getAllHistory();
// Key 의 존재하는 데이터는 마지막 서버수신 History Data // Key 의 존재하는 데이터는 마지막 서버수신 History Data
allHistory.forEach((k, v) -> { if(Objects.nonNull(allHistory)) {
Date serverRcvDt = DateUtils.stringToDate(v.getServerRcvDt()); allHistory.forEach((k, v) -> {
long diffMinute = DateUtils.diffMinute(serverRcvDt, new Date()); Date serverRcvDt = DateUtils.stringToDatetime(v.getServerRcvDt());
long diffMinute = DateUtils.diffMinute(serverRcvDt, new Date());
if(diffMinute > timeLimit) { long diffSecond = DateUtils.diffSecond(serverRcvDt, new Date());
gpHistoryShareContext.removeHistory(k);
} if(diffSecond > timeLimit) {
}); gpHistoryShareContext.removeHistory(k);
}
});
}
} }
} }

17
src/main/java/com/palnet/server/task/ctr/service/CtrCntrlTaskService.java

@ -3,24 +3,23 @@ package com.palnet.server.task.ctr.service;
import com.palnet.comn.model.CtrCntrlModel; import com.palnet.comn.model.CtrCntrlModel;
import com.palnet.comn.model.GPHistoryShareContext; import com.palnet.comn.model.GPHistoryShareContext;
import com.palnet.process.message.consumer.MessageConsumer;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.Map; import java.util.Map;
import java.util.Objects;
@Service @Service
@Slf4j @Slf4j
@RequiredArgsConstructor
public class CtrCntrlTaskService { public class CtrCntrlTaskService {
@Autowired private final GPHistoryShareContext historyShareContext;
private GPHistoryShareContext historyShareContext;
/** /**
* Websocket 통해 전달될 위치 정보를 관리 * Websocket 통해 전달될 위치 정보를 관리
@ -31,9 +30,11 @@ public class CtrCntrlTaskService {
Map<String, CtrCntrlModel> allHistory = historyShareContext.getAllHistory(); Map<String, CtrCntrlModel> allHistory = historyShareContext.getAllHistory();
allHistory.forEach((k, v) -> { if(Objects.nonNull(allHistory)) {
list.add(v); allHistory.forEach((k, v) -> {
}); list.add(v);
});
}
//=== 정렬 처리 == //=== 정렬 처리 ==
//기준 : 관제 시작일이 가장 느린순으로 상단에 올린다. //기준 : 관제 시작일이 가장 느린순으로 상단에 올린다.

6
src/main/resources/application.yml

@ -7,6 +7,12 @@ spring:
port: 5672 port: 5672
username: guest username: guest
password: guest password: guest
listener:
simple:
max-concurrency: 8
concurrency: 4
netty: netty:
task: task:

Loading…
Cancel
Save