|
|
@ -7,6 +7,9 @@ import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
import org.springframework.scheduling.annotation.Async; |
|
|
|
import org.springframework.scheduling.annotation.Async; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
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.io.IOException; |
|
|
|
import java.net.URI; |
|
|
|
import java.net.URI; |
|
|
@ -14,6 +17,7 @@ import java.net.URISyntaxException; |
|
|
|
import java.net.http.HttpClient; |
|
|
|
import java.net.http.HttpClient; |
|
|
|
import java.net.http.HttpRequest; |
|
|
|
import java.net.http.HttpRequest; |
|
|
|
import java.net.http.HttpResponse; |
|
|
|
import java.net.http.HttpResponse; |
|
|
|
|
|
|
|
import java.time.Duration; |
|
|
|
import java.util.concurrent.CompletableFuture; |
|
|
|
import java.util.concurrent.CompletableFuture; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -34,16 +38,17 @@ public class TaskWbService { |
|
|
|
@Value("${web-socket.host}") |
|
|
|
@Value("${web-socket.host}") |
|
|
|
private String WS_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") |
|
|
|
@Async("asyncExecutor") |
|
|
|
public CompletableFuture<Void> sendData(GPModel model) { |
|
|
|
public CompletableFuture<Void> sendDataAsync(GPModel model) { |
|
|
|
// log.info(">>> wb sendData model :: {}", model);
|
|
|
|
// log.info(">>> wb sendData model :: {}", model);
|
|
|
|
HttpRequest request = null; |
|
|
|
HttpRequest request = null; |
|
|
|
try { |
|
|
|
try { |
|
|
|
request = HttpRequest.newBuilder() |
|
|
|
request = HttpRequest.newBuilder() |
|
|
|
.uri(new URI( |
|
|
|
.uri(new URI( |
|
|
|
WS_HOST + WS_SEND_URI |
|
|
|
WS_HOST + WS_SEND_ASYNC_URI |
|
|
|
)) |
|
|
|
)) |
|
|
|
.version(HttpClient.Version.HTTP_2) |
|
|
|
.version(HttpClient.Version.HTTP_2) |
|
|
|
.header("Content-Type", "application/json") |
|
|
|
.header("Content-Type", "application/json") |
|
|
@ -62,4 +67,43 @@ public class TaskWbService { |
|
|
|
return CompletableFuture.completedFuture(null); |
|
|
|
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<String> 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(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|