문서 최신화를 위해서 변경된 부분 또는 수정할 부분이 발견되면 발견자가 꼭! 수정해주시기 바랍니다. !!!
Rest API, Engine API
시스템 구성
하나의 물리서버에 1개의 위고 서버프로세스와 여러개의 엔진을 올리는 형태로 구성되어 있습니다.
서버프로세스의 역할은 서버별 엔진관리, 분석노드간 파일전송, 위고 파일시스템 복원용파일 관리 등을 수행합니다.
엔진은 분산처리 노드, API 제공, 서비스 수행등의 역할을 수행하며 마스터 노드 엔진이 존재합니다.
모든엔진은 기본적으로 Engine API 를 제공하며 REST API 제공은 엔진별 설정에서 지정 합니다.
REST API 제공설정을 하면 관련 엔진은 스프링 부트를 같이 실행시키기 떄문에 JDK 1.8 이상이 필요하고 다른 엔진보다 자원을 더 많이 사용하게 됩니다.
기본 구성에 필요한 JDK 버전은 1.7이상이며 이는 아직 금융권이 1.7을 사용하는곳이 많기 때문입니다.
페이지
Engine, Rest 두 API 사용을 위한 에제 프로젝트 git
Engine API
기본적으로는 하나의 1~2개 (일반엔진 1개 분산처리 노드 2개: 대량 메시지 전송 포트 추가사용)의 API 포트를 사용하며 각 엔진에 이벤트를 보내는 방법을 제공합니다.
Engine API 는 자바 언어로만 제공됩니다.
단건 처리 예제
HostAddrPort hostAddrPort = EngineConsole.getHostAddrPort("engineCode");
//packageName 은 기본경로일 경우 null
String responseMessage = ApiRequests.sendToReceiveMessage(hostAddrPort.getHostAddress(),hostAddrPort.getPort(),"packageName","ClassName", "message");
여러건 처리 예제
ApiRequest request = new ApiRequest( "address", port);
//기본 경로일경우 제외가능
//request.setPackageName("packageName");
request.connect();
String responseMessage1 = request.sendToReceiveMessage("className", "message");
String responseMessage2 = request.sendToReceiveMessage("className2", "message");
//여기까지 반복가능
//종료시에 반드시호출
request.disConnect();
HA 구성에서의 사용 예제
//packageName 은 기본경로일 경우 null
String responseMessage = EngineConsole.sendToReceiveMessageToApiEngine("packageName", "className", "message");
화면 메뉴 위치
시스템 → 엔진 API
Rest API
Rest API 사용설정 된 엔진에 요청합니다
사용 예제
try {
URL url = new URL("address/document/sentences");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setInstanceFollowRedirects(false);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json");
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setUseCaches(false);
String charSet = "UTF-8";
OutputStream stream = conn.getOutputStream();
stream.write("sendMessage".getBytes(charSet));
stream.flush();
stream.close();
StringBuilder message = new StringBuilder();
BufferedReader br;
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
br = new BufferedReader(
new InputStreamReader(conn.getInputStream(), charSet));
for (; ; ) {
String line = br.readLine();
if (line == null) break;
message.append('\n').append(line);
}
br.close();
} else {
throw new RuntimeException("http response fail: " + conn.getResponseCode());
}
String responseMessage = message.substring(1);
}catch(Exception e){
throw new RuntimeException(e);
}
, multiple selections available,