개발
-
[Apache Camel] Netty4 Consumer 파헤치기개발/Apache Camel 2020. 9. 22. 12:10
Netty4 라이브러리를 이용해 from을 구성하게 될 시 내부적으로 어떻게 connection을 관리하고 비동기적으로 실행되는지 궁금해서 Deep 하게는 못하고 간단하게 알아보았다. org.apache.camel camel-netty4-starter 3.0.0-M4 version은 3.0.0-M4 최신버전으로 확인해보았다. 실제 현업에서 사용했던 version은 2.21.1 이었는데 확실히 최신버전이랑 차이점이 있었다. 일단 아래와 같이 Router를 작성 @Configuration public class TcpRouter extends RouteBuilder{ @Bean public StringDecoder stringDecoder() { return new StringDecoder(); } @Bea..
-
[Apache Camel] Netty4 요청마다 RequestTimeout 변경하기개발/Apache Camel 2020. 9. 16. 16:39
Socket 통신을 편하게 사용할 수 있는 Component 이다. 현재 Apache Camel로 구성된 채널 시스템 core 부분을 맡고있다. 이 때 클라이언트가 요청전문마다 타임아웃 설정이 가능하도록 해달라는 요구를 하여 찾아보던 중 알게된 정보를 적는다. ( Connection Timeout 인지, Request Tiemout 인지 초반에 답변을 듣질 못해서 둘다 찾음... ) 결론 - Connection Timeout 은 Netty4를 이용한 TCP 통신이라면 불가능, Netty4-HTTP는 http parameter 변경을 통해 우회적으로 가능 - ProducerCache 기능으로 생기는 문제인데 Map의 key값이 URI여서 connection 맺을 때 적용되는 connectionTimeout..
-
@ConfigurationProperties, @EnableConfigurationProperties개발/Spring Boot 2020. 5. 15. 10:44
maven dependency 추가 org.springframework.boot spring-boot-configuration-processor true 준비물 1. application.properties or application.yml 2. properties의 값을 binding 받을 TestVO Class 준비 - @ConfigurationProperties(prefix="test")를 통해 test로 지정된 test.key=value로 설정된 값들을 멤버변수에 bind 3. @ConfigurationProperties 설정이 되어있는 Class를 주입받을 수 있도록 Test Class 준비 - @EnableConfigurationProperties(TestVO.class)를 통해 TestVO ..
-
Message Queue 사용하는 이유?개발/용어 2020. 4. 23. 18:58
https://earlybird.kr/1489 의 글을 읽고 내가 이해한 내용을 정리하겠다. 가장 중요한 핵심은 바로!!!! 사용자에게 얼마나 빠르게, 안정적이게 정보를 전달하느냐!!!!!! 모든 서버는 위와 같은 문제를 해결하기위해 발전해왔다고 생각한다. 자 Message Queue를 사용하지 않는경우, 사용하는 경우의 상황을 가정하겠다. (동기 프로그래밍 일 경우) 1. A가 페이스북에 글을 쓴다. 2. 친구들에게 알람이 간다. 위와같이 간단하게 2가지 단계로 진행된다고 하자. Message Queue를 이용하지 않을 경우 위처럼 ① ~ ⑦단계를 거쳐서 A에게 글 등록 완료 피드백이 전달되게 된다!! A가 하고자한 행위는 "글 등록" 일 뿐인데 서버에서는 다른 로직까지 같이 처리를 해야해서 피드백이 ..
-
[Express]debug 모듈 + VSCode 디버그 연동하기개발/node.js 2020. 4. 16. 19:36
express 프레임워크 기본 디렉토리 구조를 설치하면 debug모듈을 사용하여 debug모드에서만 로그를 남길 수 있다. console.log()로 남긴 로그들은 서비스를 할 경우 제거를 해줘야하는 번거로움이 있기 때문에 debug시에만 동작하는 로그들이 있으면 개발환경, 서비스환경을 번거로운 절차가 필요없이 간단한 키워드를 추가하고 빼는것으로 설정가능하다. node 인스펙터 node 디버깅 관련 문서를 확인해보면(https://nodejs.org/ko/docs/guides/debugging-getting-started/) node 버전8부터 Inspector API를 이용하여 디버그를 한다고 한다. (현재 로컬에 설치된 node 버전은 12이다.) node를 실행시킬 때 --inspect 옵션을 넣어..
-
[Express]express 프레임워크 구조(1)개발/node.js 2020. 4. 13. 20:30
express 프레임워크 구조에대해 알아보자. 일단 MVC2 모델로 웹서버를 구성하기 위해 Model에 담은 JSON객체를 View에 표현하기위한 View Engine은 ejs(embedded javascript)를 사용하기로 함 자세히 들여다보진 않았지만 사용방법이 JSP 문법과 비슷하다. 설치 express, express-generator 모듈을 전역으로 사전설치 하자 npm install -g express npm install -g express-generator 설치할 폴더에 express 프레임워크 디렉토리 구조 생성 + ejs Engine 설치 express -e Default는 jade 템플릿엔진 이기때문에 -e를 붙여서 ejs 템플릿엔진을 명시해준다. jade는 자체문법을 사용하여 ht..
-
[Express] app.use()에 대해개발/node.js 2020. 3. 28. 18:44
미들웨어 레벨 app.use() 함수에 대해 알아보기 전에 미들웨어 동작 레벨에 대해 알아 보겠다. 1. 애플리케이션 레벨 2. 라우터 레벨 일단은 두가지로 나누어질 수 있다. 물론 단계는 애플리케이션 -> 라우터 단계로 실행순서가 이루어져 있다고 볼 수 있다. 애플리케이션 레벨과 라우터 레벨은 실행단계의 차이지 기능적으론 다른 점이 없다. 애플리케이션 분기 + 라우터 분기 로 더 세세하게 요청 URL을 분리하여 제어가 가능하다는 점이다. 코드로 알아보자. var indexRouter = require('./routes/index'); var usersRouter = require('./routes/users'); var app = express(); app.use('/', indexRouter); ap..
-
[Express] 프레임워크 미들웨어(Middleware)란?개발/node.js 2020. 3. 24. 22:12
미들웨어란, 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수에 대한 액세스 권한을 갖는 함수입니다. 그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시됩니다. 자 뭔소리인고 하니, 1. express 프레임워크 === 웹 프레임워크 이다. 결국 TCP/IP를 기반으로 HTTP 패킷을 생성, 해석을 해주는 프레임워크라는 것이다. HTTP Body부에 존재하는 가장 중요한 멤버들은 request, response 이다. 클라이언트가 보내는 request를 받고 response를 생성해서 보내주는 과정의 중간(Middle)에 개발자가 간섭하여 로직생성, request || response 변경, 흐름제어 등을 한다는 것이다. 공식문서(https://expressjs.com/ko/g..