vert.x 3

Vertx TCP 서버에서 JSON 기반의 통신을 쉽게 하기

제목이 좀 별로이긴한데.. TCP로 통신은 하는데, 실제 데이터는 Json으로 할 생각인데, vert.x의 TCP는 NetSocket에 ReadStream 형식을 블록 단위로 받아서 처리하도록 되어 있다. 크지 않은 단순한 데이터라면 어차피 BSD Socket Write 이벤트 한번이면 충분하니 별로 작업을 안해도 되는데, 그 데이터 량이 커지는 경우 Buffer 단위의 블록을 모아서 처리해야한다. 이 때, Buffer 블록이 얼마나 올지 예상을 하기 어려운 경우라면, 선택을 해야한다. 고정된 데이터 길이를 붙이고, 나머지 데이터가 올때까지 읽던가 아니면, Json 형식을 실시간으로 분석하면서 Json 형식이 끝날때까지 읽던가. 고정된 길이를 붙이는 첫번째 방법은 자주 해보던거라, 두번째 방식을 선택해봤..

IT한 것/Vert.X 2021.04.01

Vert.x TCP read에서 데이터가 잘리는 현상

어차피 최종 서비스는 TCP over TLS로 갈것이긴 한데, 편안한 개발 환경을 위해서 종종 TLS를 끄고 개발을 진행했다. 슬슬 데이터가 잘 오가는 것 같아서, 단순한 더미데이터에서 실제에 가까운 테스트 데이터로 변경하여 작업하니 문제가 발생했다. 1차로 보여지는 파싱 오류가 발생했다 - 우리가 사용하는 데이터는 JSON 형식인데, 해당 형식에 맞지 않는다는 것 바로 길이가 의심되서 일단 읽은 데이터의 길이를 찍어보니 2048. 딱 감이 온다. NetServer의 생성 옵션을 보면 setReceiveBufferSize가 있어서, 이 값이 기본 2048인것으로 짐작했으나, 의외로 -1로 제한 없음이다. 라고 생각했는데.. 제한 없음이 아닌 것 같다. 직접 2048 이상의 값을 설정하니, 잘림 현상이 사..

IT한 것/Vert.X 2021.04.01

SQLClient 사용시 oracle prepared statement 오류

java.sql.SQLException: 지원되지 않는 기능입니다: getMetaData at oracle.jdbc.driver.ArrayDataResultSet.getMetaData(ArrayDataResultSet.java:1029) ~[ojdbc8.jar:12.2.0.1.0] at com.mchange.v2.c3p0.impl.NewProxyResultSet.getMetaData(NewProxyResultSet.java:987) ~[c3p0-0.9.5.4.jar:0.9.5.4] at io.vertx.jdbcclient.impl.actions.JDBCQueryAction.decodeReturnedKeys(JDBCQueryAction.java:182) [vertx-jdbc-client-4.0.2.jar:..

IT한 것/Vert.X 2021.03.17