Browse Source

socket server 분리 작업

master
노승철 2 years ago
parent
commit
15acbc41a2
  1. 8
      src/main/java/com/palnet/Application.java
  2. 13
      src/main/java/com/palnet/comn/collection/GPCollection.java
  3. 2
      src/main/java/com/palnet/comn/model/GPDatabaseModel.java
  4. 2
      src/main/java/com/palnet/comn/model/GPHistoryModel.java
  5. 2
      src/main/java/com/palnet/comn/model/GPModel.java
  6. 47
      src/main/java/com/palnet/process/message/config/MessageConfig.java
  7. 26
      src/main/java/com/palnet/process/message/producer/MessageProducer.java
  8. 7
      src/main/java/com/palnet/server/command/SocketCommand.java
  9. 15
      src/main/resources/application.yml

8
src/main/java/com/palnet/Application.java

@ -1,13 +1,19 @@
package com.palnet; package com.palnet;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication @SpringBootApplication
public class Application { public class Application {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(Application.class, args); SpringApplication.run(Application.class, args);
} }
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
} }

13
src/main/java/com/palnet/comn/collection/GPCollection.java

@ -3,9 +3,9 @@ package com.palnet.comn.collection;
import com.palnet.comn.utils.ContextUtils; import com.palnet.comn.utils.ContextUtils;
import com.palnet.comn.utils.DateUtils; import com.palnet.comn.utils.DateUtils;
import com.palnet.process.message.producer.MessageProducer; import com.palnet.process.message.producer.MessageProducer;
import com.palnet.process.model.GPDatabaseModel; import com.palnet.comn.model.GPDatabaseModel;
import com.palnet.process.model.GPHistoryModel; import com.palnet.comn.model.GPHistoryModel;
import com.palnet.process.model.GPModel; import com.palnet.comn.model.GPModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -57,14 +57,15 @@ public class GPCollection {
data.setPostionHistory(historyList); data.setPostionHistory(historyList);
/* Message Queue Server 전달 */ /* Message Queue Server 전달 */
convertModel(model); convertModel(data);
} }
} }
public void convertModel(GPModel model) { public void convertModel(GPModel model) {
GPDatabaseModel databaseModel = new GPDatabaseModel(); GPDatabaseModel databaseModel = new GPDatabaseModel();
BeanUtils.copyProperties(model, databaseModel); BeanUtils.copyProperties(model, databaseModel);
messageProducer.sendSocketData(databaseModel);
messageProducer.sendToAppServerMessage(databaseModel);
// messageProducer.sendToClientMessage(model);
} }
} }

2
src/main/java/com/palnet/process/model/GPDatabaseModel.java → src/main/java/com/palnet/comn/model/GPDatabaseModel.java

@ -1,4 +1,4 @@
package com.palnet.process.model; package com.palnet.comn.model;
import lombok.Data; import lombok.Data;

2
src/main/java/com/palnet/process/model/GPHistoryModel.java → src/main/java/com/palnet/comn/model/GPHistoryModel.java

@ -1,4 +1,4 @@
package com.palnet.process.model; package com.palnet.comn.model;
import lombok.Data; import lombok.Data;

2
src/main/java/com/palnet/process/model/GPModel.java → src/main/java/com/palnet/comn/model/GPModel.java

@ -1,4 +1,4 @@
package com.palnet.process.model; package com.palnet.comn.model;
import lombok.Data; import lombok.Data;

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

@ -1,12 +1,10 @@
package com.palnet.process.message.config; package com.palnet.process.message.config;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.*;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; 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.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@ -23,10 +21,10 @@ public class MessageConfig {
this.env = env; this.env = env;
} }
@Bean // @Bean
public CachingConnectionFactory cachingConnectionFactory() { // public CachingConnectionFactory cachingConnectionFactory() {
return new CachingConnectionFactory(); // return new CachingConnectionFactory();
} // }
@Bean @Bean
public Jackson2JsonMessageConverter converter() { public Jackson2JsonMessageConverter converter() {
@ -34,22 +32,41 @@ public class MessageConfig {
} }
@Bean @Bean
public TopicExchange droneExchange() { public DirectExchange appDroneExchange() {
return new TopicExchange(env.getProperty("message.dron.exchange-name")); return new DirectExchange(env.getProperty("message.app.exchange-name"));
}
@Bean
public DirectExchange websocketDroneExchange() {
return new DirectExchange(env.getProperty("message.websocket.exchange-name"));
}
@Bean
public Queue appDroneQueue() {
return new Queue(env.getProperty("message.app.queue-name"), false);
}
@Bean
public Queue websocketDroneQueue() {
return new Queue(env.getProperty("message.websocket.queue-name"), false);
} }
@Bean @Bean
public Queue droneQueue() { public Binding appDroneBinding(Queue appDroneQueue, DirectExchange appDroneExchange) {
return new Queue(env.getProperty("message.dron.queue-name")); return BindingBuilder.bind(appDroneQueue)
.to(appDroneExchange)
.with(env.getProperty("message.app.routing-key"));
} }
@Bean @Bean
public Binding droneBinding(Queue queue, TopicExchange exchange) { public Binding websocketDroneBinding(Queue websocketDroneQueue, DirectExchange websocketDroneExchange) {
return BindingBuilder.bind(queue).to(exchange).with(env.getProperty("message.dron.routing-key")); return BindingBuilder.bind(websocketDroneQueue)
.to(websocketDroneExchange)
.with(env.getProperty("message.websocket.routing-key"));
} }
@Bean @Bean
public RabbitTemplate rabbitTemplate(CachingConnectionFactory connectionFactory, Jackson2JsonMessageConverter converter) { public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, Jackson2JsonMessageConverter converter) {
RabbitTemplate rabbitTemplate = new RabbitTemplate(); RabbitTemplate rabbitTemplate = new RabbitTemplate();
rabbitTemplate.setConnectionFactory(connectionFactory); rabbitTemplate.setConnectionFactory(connectionFactory);

26
src/main/java/com/palnet/process/message/producer/MessageProducer.java

@ -1,8 +1,10 @@
package com.palnet.process.message.producer; package com.palnet.process.message.producer;
import com.palnet.process.model.GPDatabaseModel; import com.fasterxml.jackson.core.JsonProcessingException;
import com.palnet.process.model.GPModel; import com.fasterxml.jackson.databind.ObjectMapper;
import com.palnet.comn.model.GPDatabaseModel;
import com.palnet.comn.model.GPModel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
@ -16,16 +18,26 @@ public class MessageProducer {
private final RabbitTemplate rabbitTemplate; private final RabbitTemplate rabbitTemplate;
private final Environment env; private final Environment env;
private final ObjectMapper objectMapper;
public MessageProducer(RabbitTemplate rabbitTemplate, Environment env) { public MessageProducer(RabbitTemplate rabbitTemplate, Environment env, ObjectMapper objectMapper) {
this.rabbitTemplate = rabbitTemplate; this.rabbitTemplate = rabbitTemplate;
this.env = env; this.env = env;
this.objectMapper = objectMapper;
} }
public void sendSocketData(GPDatabaseModel model) { public void sendToAppServerMessage(GPDatabaseModel model){
rabbitTemplate.convertAndSend( rabbitTemplate.convertAndSend(
Objects.requireNonNull(env.getProperty("message.drone.exchange-name")), Objects.requireNonNull(env.getProperty("message.app.queue-name")),
Objects.requireNonNull(env.getProperty("message.drone.routing-key")), model
model); );
}
public void sendToClientMessage(GPModel model) {
rabbitTemplate.convertAndSend(
Objects.requireNonNull(env.getProperty("message.websocket.exchange-name")),
Objects.requireNonNull(env.getProperty("message.websocket.routing-key")),
model
);
} }
} }

7
src/main/java/com/palnet/server/command/SocketCommand.java

@ -1,7 +1,7 @@
package com.palnet.server.command; package com.palnet.server.command;
import com.palnet.comn.collection.GPCollection; import com.palnet.comn.collection.GPCollection;
import com.palnet.process.model.GPModel; import com.palnet.comn.model.GPModel;
import com.palnet.server.codec.SocketPayload; import com.palnet.server.codec.SocketPayload;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -127,10 +127,7 @@ public class SocketCommand {
logger.info("lat , lon No data "); logger.info("lat , lon No data ");
} }
} }
collection.putData(dataList);
// collection.putData(dataList);
// logger.debug("SIZE :: " +collection.getData().size() );
} }

15
src/main/resources/application.yml

@ -5,7 +5,6 @@ spring:
username: guest username: guest
password: guest password: guest
netty: netty:
task: task:
controlinfoTime: 2000 controlinfoTime: 2000
@ -19,9 +18,11 @@ server:
port: 8182 port: 8182
message: message:
drone: app:
queue-name: drone.queue queue-name: app.drone.queue
exchange-name: drone.exchange exchange-name: app.drone.exchange
routing-key: drone.routing.# routing-key: app.drone.routing.#
websocket:
queue-name: websocket.drone.queue
exchange-name: websocket.drone.exchange
routing-key: websocket.drone.routing.#
Loading…
Cancel
Save