diff --git a/pom.xml b/pom.xml
index 8dce0c3..6ffb6c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,6 +50,10 @@
org.springframework.boot
spring-boot-starter-actuator
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
diff --git a/src/main/java/com/palnet/server/command/SocketCommand.java b/src/main/java/com/palnet/server/command/SocketCommand.java
index 3364bd2..b43daa7 100644
--- a/src/main/java/com/palnet/server/command/SocketCommand.java
+++ b/src/main/java/com/palnet/server/command/SocketCommand.java
@@ -114,7 +114,7 @@ public class SocketCommand {
try {
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(
- env.getProperty("app.host") + "api/ctr/cntrl/id/" + model.getObjectId()
+ env.getProperty("app.host") + "/api/ctr/cntrl/id/" + model.getObjectId()
))
.version(HttpClient.Version.HTTP_2)
.GET()
@@ -162,15 +162,20 @@ public class SocketCommand {
if (model.getObjectId().indexOf("PA") > -1) {
// messageProducer.sendControlHistoryMessage(model);
try {
- taskWbService.sendData(model);
- } catch (TaskRejectedException e){
+ taskWbService.sendDataWebClient(model);
+ } catch (Exception e) {
logger.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace());
}
}
// STEP 3. 화면에 표출할 정보 WebSocket 전달
// messageProducer.sendControlMessage(model);
-// taskServerService.sendData(model);
+ try {
+// taskServerService.sendData(model);
+ taskServerService.sendDataWebClient(model);
+ } catch (Exception e) {
+ logger.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace());
+ }
} else {
logger.error("좌표 정보가 존재하지 않습니다.");
@@ -236,7 +241,7 @@ public class SocketCommand {
try {
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(
- env.getProperty("app.host") + "api/ctr/cntrl/id/" + model.getObjectId()
+ env.getProperty("app.host") + "/api/ctr/cntrl/id/" + model.getObjectId()
))
.version(HttpClient.Version.HTTP_2)
.GET()
@@ -352,7 +357,7 @@ public class SocketCommand {
try {
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(
- env.getProperty("app.host") + "api/ctr/cntrl/id/" + model.getObjectId()
+ env.getProperty("app.host") + "/api/ctr/cntrl/id/" + model.getObjectId()
))
.version(HttpClient.Version.HTTP_2)
.GET()
diff --git a/src/main/java/com/palnet/server/task/server/service/TaskServerService.java b/src/main/java/com/palnet/server/task/server/service/TaskServerService.java
index 967116c..cd9af5b 100644
--- a/src/main/java/com/palnet/server/task/server/service/TaskServerService.java
+++ b/src/main/java/com/palnet/server/task/server/service/TaskServerService.java
@@ -2,11 +2,14 @@ package com.palnet.server.task.server.service;
import com.palnet.comn.model.GPModel;
import com.palnet.comn.utils.JsonUtils;
+import io.netty.channel.ChannelOption;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
+import org.springframework.web.reactive.function.client.WebClient;
+import reactor.core.publisher.Mono;
import java.io.IOException;
import java.net.URI;
@@ -34,10 +37,10 @@ public class TaskServerService {
@Value("${app.host}")
private String APP_HOST;
- private final String APP_SEND_URI = "api/server/receiver";
+ private final String APP_SEND_ASYNC_URI = "/api/server/receiver/async";
+ private final String APP_SEND_URI = "/api/server/receiver";
- @Async("asyncExecutor")
- public CompletableFuture sendData(GPModel model) {
+ public void sendData(GPModel model) {
HttpRequest request = null;
try {
request = HttpRequest.newBuilder()
@@ -57,8 +60,49 @@ public class TaskServerService {
log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace());
}
+// log.info("websocket send message : {}", JsonUtils.toJson(model));
+ }
+
+ @Async("asyncExecutor")
+ public CompletableFuture sendDataAsync(GPModel model) {
+ HttpRequest request = null;
+ try {
+ request = HttpRequest.newBuilder()
+ .uri(new URI(
+ APP_HOST + APP_SEND_ASYNC_URI
+ ))
+ .version(HttpClient.Version.HTTP_2)
+ .header("Content-Type", "application/json")
+ .POST(HttpRequest.BodyPublishers.ofString(JsonUtils.toJson(model)))
+ .build();
+ HttpResponse response = HttpClient
+ .newHttpClient()
+ .send(request, HttpResponse.BodyHandlers.ofString());
+ } catch (URISyntaxException | InterruptedException | IOException e) {
+ log.error("요청한 URL 정보가 잘못되었습니다.", e.getMessage());
+ } catch (Exception e) {
+ log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace());
+ }
+
// log.info("websocket send message : {}", JsonUtils.toJson(model));
return CompletableFuture.completedFuture(null);
}
+
+ public void sendDataWebClient(GPModel model) {
+
+ WebClient client = WebClient.builder()
+ .baseUrl(APP_HOST)
+ .defaultHeader("Content-Type", "application/json")
+ .build();
+
+ client.post()
+ .uri(APP_SEND_URI)
+ .body(Mono.just(model), GPModel.class)
+ .retrieve()
+ .bodyToMono(Void.class).subscribe();
+
+
+ }
+
}
diff --git a/src/main/java/com/palnet/server/task/wb/service/TaskWbService.java b/src/main/java/com/palnet/server/task/wb/service/TaskWbService.java
index 9288956..1fd1739 100644
--- a/src/main/java/com/palnet/server/task/wb/service/TaskWbService.java
+++ b/src/main/java/com/palnet/server/task/wb/service/TaskWbService.java
@@ -7,6 +7,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
+import org.springframework.web.reactive.function.client.WebClient;
+import reactor.core.publisher.Mono;
+import reactor.netty.http.client.HttpClientRequest;
import java.io.IOException;
import java.net.URI;
@@ -14,6 +17,7 @@ import java.net.URISyntaxException;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
+import java.time.Duration;
import java.util.concurrent.CompletableFuture;
/**
@@ -34,16 +38,17 @@ public class TaskWbService {
@Value("${web-socket.host}")
private String WS_HOST;
- private final String WS_SEND_URI = "/api/ws/receiver/async";
+ private final String WS_SEND_ASYNC_URI = "/api/ws/receiver/async";
+ private final String WS_SEND_URI = "/api/ws/receiver";
@Async("asyncExecutor")
- public CompletableFuture sendData(GPModel model) {
+ public CompletableFuture sendDataAsync(GPModel model) {
// log.info(">>> wb sendData model :: {}", model);
HttpRequest request = null;
try {
request = HttpRequest.newBuilder()
.uri(new URI(
- WS_HOST + WS_SEND_URI
+ WS_HOST + WS_SEND_ASYNC_URI
))
.version(HttpClient.Version.HTTP_2)
.header("Content-Type", "application/json")
@@ -62,4 +67,43 @@ public class TaskWbService {
return CompletableFuture.completedFuture(null);
}
+ public void sendData(GPModel model) {
+// log.info(">>> wb sendData model :: {}", model);
+ HttpRequest request = null;
+ try {
+ request = HttpRequest.newBuilder()
+ .uri(new URI(
+ WS_HOST + WS_SEND_URI
+ ))
+ .version(HttpClient.Version.HTTP_2)
+ .header("Content-Type", "application/json")
+ .POST(HttpRequest.BodyPublishers.ofString(JsonUtils.toJson(model)))
+ .build();
+ HttpResponse response = HttpClient
+ .newHttpClient()
+ .send(request, HttpResponse.BodyHandlers.ofString());
+ } catch (URISyntaxException | InterruptedException | IOException e) {
+ log.error("요청한 URL 정보가 잘못되었습니다.", e.getMessage());
+ } catch (Exception e) {
+ log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace());
+ }
+
+// log.info("websocket send message : {}", JsonUtils.toJson(model));
+ }
+
+ public void sendDataWebClient(GPModel model){
+
+ WebClient client = WebClient.builder()
+ .baseUrl(WS_HOST)
+ .defaultHeader("Content-Type", "application/json")
+ .build();
+
+ client.post()
+ .uri(WS_SEND_URI)
+ .body(Mono.just(model), GPModel.class)
+ .retrieve()
+ .bodyToMono(Void.class)
+ .subscribe();
+
+ }
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 5b1bb60..0481506 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -35,7 +35,7 @@ server:
# routing-key: websocket.drone.routing.#
app:
- host: http://127.0.0.1:8080/
+ host: http://127.0.0.1:8080
web-socket:
host: http://127.0.0.1:8181
@@ -83,7 +83,7 @@ server:
# routing-key: websocket.drone.routing.#
app:
- host: http://211.253.38.218:8080/
+ host: http://211.253.38.218:8080
web-socket:
host: http://211.253.38.218:8081
@@ -143,7 +143,7 @@ logging:
com.palnet: info
app:
- host: http://211.253.38.218:8080/
+ host: http://211.253.38.218:8080
web-socket:
host: http://211.253.38.218:8081
@@ -204,7 +204,7 @@ logging:
com.palnet: info
app:
- host: http://211.253.38.218:8080/
+ host: http://211.253.38.218:8080
web-socket:
host: http://211.253.38.218:8081