From ffa18ac1e0c41d23cd36feae8a0194ac4eea86ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=98=84=EC=84=B1=ED=95=84?= Date: Mon, 6 Jan 2025 10:41:00 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=EB=8F=99=EA=B8=B0=20=EC=84=A4?= =?UTF-8?q?=EB=AA=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/비동기.md | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 doc/비동기.md diff --git a/doc/비동기.md b/doc/비동기.md new file mode 100644 index 0000000..f3d9377 --- /dev/null +++ b/doc/비동기.md @@ -0,0 +1,87 @@ +# 비동기 사용 방법 +## 1. 실제 비동기 응답을 위한 큐 관리 등록 + 큐 이름을 입력하고 Handler 스크립트 작성 + +## 2. 비동기 처리를 위한 응답 관리 등록 +- 요청 스크립트 + 큐에 메시지를 추가하도록 처리 +- 응답 + API응답 메시지 등록 + +## 3. 2에서 등록한 응답관리 API를 호출 + +# 예제 +* http://testmaster.elink365.net:38080 에 등록된 예제 참고 + +## 1. 큐관리 +1) 실제 응답을 받을 API를 응답관리에 /ibk_async_response로 등록 +2) Handler Script 에 ibk 비동기 처리 스크립트 등록 + +### Handler Script +```javascript +var URL = Java.type('java.net.URL'); +var HttpURLConnection = Java.type('java.net.HttpURLConnection'); +var BufferedReader = Java.type('java.io.BufferedReader'); +var InputStreamReader = Java.type('java.io.InputStreamReader'); +var StringBuilder = Java.type('java.lang.StringBuilder'); + +try { + + var url = new URL('http://testmaster.elink365.net:38080/ibk_async_response'); + var connection = url.openConnection(); + connection.setRequestMethod('POST'); + connection.setDoOutput(true); + + // Write the body + var outputStream = connection.getOutputStream(); + var body = 'async_result' + message; // /ibk/async_test 가 받은 메시지 바디 + outputStream.write(new java.lang.String(body).getBytes('UTF-8')); + outputStream.close(); + + console.log(body); + // Read the response + var responseCode = connection.getResponseCode(); + if (responseCode === 200) { + var inputStream = connection.getInputStream(); + var reader = new BufferedReader(new InputStreamReader(inputStream)); + var builder = new StringBuilder(); + var line; + + while ((line = reader.readLine()) !== null) { + builder.append(line); + builder.append('\n'); + } + + reader.close(); + console.log('POST Response:' + builder.toString()); + } else { + console.log('HTTP Error! Status:' + responseCode); + } +} catch (error) { +console.log('Error making POST request:' + error); +} +``` + + +## 2. 응답관리 + 기본 응답 위한 API /ibk/async_test 등록 + +### 요청 스크립트 +```javascript + +tmScheduleToQueue('ibk', request.body, 5); +//QUEUE 에 body 내용을 넣고, 아래 응답을 바로 리턴 + +``` + +### 기본 응답 +```json +{ +"result": true +} + +``` + + +## 3. 요청관리에 비동기테스트 컬렉션-> 비동기 API /ibk/async_test 등록된 API호출 +