From dc70c4f37e9084a80b1b6411f14724cbdffa03e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dhji=28=EC=A7=80=EB=8C=80=ED=95=9C=29?= Date: Tue, 29 Aug 2023 19:10:58 +0900 Subject: [PATCH] async apply socket, websocket, server --- .../com/palnet/process/message/Receiver.java | 22 ----- .../process/message/config/MessageConfig.java | 53 ---------- .../message/consumer/MessageConsumer.java | 99 ------------------- .../controller/SocketReceiverController.java | 16 ++- .../palnet/server/task/ctr/CtrCntrlTask.java | 2 +- 5 files changed, 15 insertions(+), 177 deletions(-) delete mode 100644 src/main/java/com/palnet/process/message/Receiver.java delete mode 100644 src/main/java/com/palnet/process/message/config/MessageConfig.java delete mode 100644 src/main/java/com/palnet/process/message/consumer/MessageConsumer.java diff --git a/src/main/java/com/palnet/process/message/Receiver.java b/src/main/java/com/palnet/process/message/Receiver.java deleted file mode 100644 index eeb6a5a..0000000 --- a/src/main/java/com/palnet/process/message/Receiver.java +++ /dev/null @@ -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; -// } -//} diff --git a/src/main/java/com/palnet/process/message/config/MessageConfig.java b/src/main/java/com/palnet/process/message/config/MessageConfig.java deleted file mode 100644 index 3f72a15..0000000 --- a/src/main/java/com/palnet/process/message/config/MessageConfig.java +++ /dev/null @@ -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; -// } -// -//} diff --git a/src/main/java/com/palnet/process/message/consumer/MessageConsumer.java b/src/main/java/com/palnet/process/message/consumer/MessageConsumer.java deleted file mode 100644 index 5634113..0000000 --- a/src/main/java/com/palnet/process/message/consumer/MessageConsumer.java +++ /dev/null @@ -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; -// } -//} diff --git a/src/main/java/com/palnet/server/controller/SocketReceiverController.java b/src/main/java/com/palnet/server/controller/SocketReceiverController.java index d52a41f..befdae3 100644 --- a/src/main/java/com/palnet/server/controller/SocketReceiverController.java +++ b/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 asyncReceiver(@RequestBody GPModel model) { + return () -> { + log.info("websocket message : {}", model); + CtrCntrlModel history = service.modelConvert(model); + // DRON의 대한 식별정보만 이력 관리 + historyShareContext.putHistory(model.getObjectId(), history); + + return "OK"; + }; + } } diff --git a/src/main/java/com/palnet/server/task/ctr/CtrCntrlTask.java b/src/main/java/com/palnet/server/task/ctr/CtrCntrlTask.java index 996a9a3..24502bd 100644 --- a/src/main/java/com/palnet/server/task/ctr/CtrCntrlTask.java +++ b/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()))); });