Browse Source

async apply socket, websocket, server

feature/remove-rabbit
지대한 1 year ago
parent
commit
dc70c4f37e
  1. 22
      src/main/java/com/palnet/process/message/Receiver.java
  2. 53
      src/main/java/com/palnet/process/message/config/MessageConfig.java
  3. 99
      src/main/java/com/palnet/process/message/consumer/MessageConsumer.java
  4. 16
      src/main/java/com/palnet/server/controller/SocketReceiverController.java
  5. 2
      src/main/java/com/palnet/server/task/ctr/CtrCntrlTask.java

22
src/main/java/com/palnet/process/message/Receiver.java

@ -1,22 +0,0 @@
//package com.palnet.process.message;
//
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component;
//
//import java.util.concurrent.CountDownLatch;
//
//@Component
//@Slf4j
//public class Receiver {
//
// private CountDownLatch latch = new CountDownLatch(1);
//
// public void receiveMessage(String message) {
// log.info("Received <" + message);
// latch.countDown();
// }
//
// public CountDownLatch getLatch() {
// return latch;
// }
//}

53
src/main/java/com/palnet/process/message/config/MessageConfig.java

@ -1,53 +0,0 @@
//package com.palnet.process.message.config;
//
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.amqp.core.Binding;
//import org.springframework.amqp.core.BindingBuilder;
//import org.springframework.amqp.core.DirectExchange;
//import org.springframework.amqp.core.Queue;
//import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
//import org.springframework.amqp.rabbit.connection.ConnectionFactory;
//import org.springframework.amqp.rabbit.core.RabbitTemplate;
//import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.core.env.Environment;
//
//@Configuration
//@Slf4j
//public class MessageConfig {
//
// private final Environment env;
//
// public MessageConfig(Environment env) {
// this.env = env;
// }
//// @Bean
//// public CachingConnectionFactory cachingConnectionFactory() {
//// CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
////
//// connectionFactory.setHost(env.getProperty("spring.rabbitmq.host"));
//// connectionFactory.setPort(Integer.parseInt(env.getProperty("spring.rabbitmq.port")));
//// connectionFactory.setUsername(env.getProperty("spring.rabbitmq.username"));
//// connectionFactory.setPassword(env.getProperty("spring.rabbitmq.password"));
////
//// return connectionFactory;
//// }
//
// @Bean
// public Jackson2JsonMessageConverter converter() {
// return new Jackson2JsonMessageConverter();
// }
//
//
// @Bean
// public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, Jackson2JsonMessageConverter converter) {
// RabbitTemplate rabbitTemplate = new RabbitTemplate();
//
// rabbitTemplate.setConnectionFactory(connectionFactory);
// rabbitTemplate.setMessageConverter(converter);
//
// return rabbitTemplate;
// }
//
//}

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

@ -1,99 +0,0 @@
//package com.palnet.process.message.consumer;
//
//import com.fasterxml.jackson.core.JsonProcessingException;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.palnet.comn.model.CtrCntrlModel;
//import com.palnet.comn.model.CtrHistoryShareContext;
//import com.palnet.comn.model.GPModel;
//import com.palnet.comn.utils.JsonUtils;
//import com.palnet.server.collection.ChannelCollection;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.amqp.rabbit.annotation.RabbitHandler;
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
//import org.springframework.core.env.Environment;
//import org.springframework.stereotype.Component;
//
//@Component
//@Slf4j
//public class MessageConsumer {
//
// private ChannelCollection cc = new ChannelCollection();
//
// private final ObjectMapper objectMapper;
// private final CtrHistoryShareContext gpHistoryShareModel;
// private final Environment env;
//
// public MessageConsumer(CtrHistoryShareContext gpHistoryShareModel, Environment env) {
// this.objectMapper = JsonUtils.getObjectMapper();
// this.gpHistoryShareModel = gpHistoryShareModel;
// this.env = env;
// }
//
// @RabbitHandler
// @RabbitListener(queues = {"websocket.drone.queue"}, concurrency = "8")
// public void receiveDroneMessage(final String message) throws JsonProcessingException {
// log.info("websocket message : {}", message);
//
// GPModel model = objectMapper.readValue(message, GPModel.class);
//
// CtrCntrlModel history = this.convertModel(model);
//
// // DRON의 대한 식별정보만 이력 관리
// gpHistoryShareModel.putHistory(model.getObjectId(), history);
// }
//
// public CtrCntrlModel convertModel(final GPModel dataInfo) {
// CtrCntrlModel model = new CtrCntrlModel();
// CtrCntrlModel prevModel = gpHistoryShareModel.getHistory(dataInfo.getObjectId());
//
// model.setObjectId(dataInfo.getObjectId());
// model.setControlId(dataInfo.getControlId());
// model.setTrmnlId(dataInfo.getTerminalId());
// model.setControlStartDt(dataInfo.getControlStartDt());
// model.setObjectTypeCd(dataInfo.getObjectType());
// model.setLat(dataInfo.getLat());
// model.setLng(dataInfo.getLng());
// model.setElevType(dataInfo.getElevType());
// model.setElev(dataInfo.getElev());
// model.setSpeedType(dataInfo.getSpeedType());
// model.setSpeed(dataInfo.getSpeed());
// model.setBetteryLevel(dataInfo.getBetteryLevel());
// model.setBetteryVoltage(dataInfo.getBetteryVoltage());
// model.setDronStatus(dataInfo.getDronStatus());
// model.setHeading(dataInfo.getHeading());
// model.setMoveDistance(dataInfo.getMoveDistance());
// model.setMoveDistanceType(dataInfo.getMoveDistanceType());
//
// model.setServerRcvDt(dataInfo.getServerRcvDt());
//
// // 환경 데이터 필드 추가
// model.setSensorCo(dataInfo.getSensorCo());
// model.setSensorSo2(dataInfo.getSensorSo2());
// model.setSensorNo2(dataInfo.getSensorNo2());
// model.setSensorO3(dataInfo.getSensorO3());
// model.setSensorDust(dataInfo.getSensorDust());
//
// // 비정상 상황 식별코드 추가
// model.setControlWarnCd(dataInfo.isControlWarnCd());
//
//// if(prevModel == null) {
//// if(model.isControlWarnCd()) {
//// model.setControlWarnNotyCd(true); // 최초 비정상 발생
//// }
//// } else {
//// if(prevModel.isControlWarnCd() && model.isControlWarnCd()) {
//// model.setControlWarnNotyCd(false); // 비정상 -> 비정상
//// }
//// if(prevModel.isControlWarnCd() && !model.isControlWarnCd()) {
//// model.setControlWarnNotyCd(false); // 비정상 -> 정상
//// }
//// if(!prevModel.isControlWarnCd() && model.isControlWarnCd()) {
//// model.setControlWarnNotyCd(true); // 정상 -> 비정상상
//// }
//// }
////
//// model.setControlCacheCount(1);
//
// return model;
// }
//}

16
src/main/java/com/palnet/server/controller/SocketReceiverController.java

@ -11,6 +11,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.concurrent.Callable;
/**
* packageName : com.palnet.server.controller
* fileName : WebSocketReceiverController
@ -35,8 +37,6 @@ public class SocketReceiverController {
@PostMapping("/receiver")
public ResponseEntity<?> receiver(@RequestBody GPModel model) {
log.info("websocket message : {}", model);
// log.info("websocket message : {}", message);
// GPModel model = null;
// try {
// model = objectMapper.readValue(message, GPModel.class);
@ -52,4 +52,16 @@ public class SocketReceiverController {
return ResponseEntity.ok().build();
}
@PostMapping("/receiver/async")
public Callable<String> asyncReceiver(@RequestBody GPModel model) {
return () -> {
log.info("websocket message : {}", model);
CtrCntrlModel history = service.modelConvert(model);
// DRON의 대한 식별정보만 이력 관리
historyShareContext.putHistory(model.getObjectId(), history);
return "OK";
};
}
}

2
src/main/java/com/palnet/server/task/ctr/CtrCntrlTask.java

@ -25,7 +25,7 @@ public class CtrCntrlTask implements Runnable{
@Override
public void run() {
try {
logger.info(">>> run : {}", cc.getAllChannels());
// logger.info(">>> run : {}", cc.getAllChannels());
cc.getAllChannels().stream().forEach(c -> { // 접속되어 있는 모든 사용자에게 전달 처리
c.writeAndFlush(new TextWebSocketFrame(JsonUtils.toJson(service.getList())));
});

Loading…
Cancel
Save