기본 콘텐츠로 건너뛰기

7월, 2023의 게시물 표시

블로킹을 비동기로

 블로킹 작업을 비동기적으로 수행하고 싶을 때, Mono.fromCallable은 subscribeOn 메소드와 함께 사용하여 블로킹 작업을 별도의 스레드에서 실행할 수 있습니다. Schedulers.elastic() 과 Schedulers.boundedElastic() 은 블로킹 IO 태스크와 같은 생명주기가 긴 태스크들에 적합하다. elastic 은 요청 할때마다 제한 없이 스레드를 생성한다. 최근에 도입된 boundedElastic 은 같은 기능을 하지만 스레드 수가 제한된다.  Mono.fromCallable(() -> blockingCall()) .subscribeOn(Schedulers.boundedElastic())

멀리 보는 거, 좋은 설계는 아무리 강조해도 지나치지 않다.

 같이 일하던 주니어 친구가 제법 컨텐츠 시스템 설계를 잘 만들어놓았다. redis + hystrix 를 쉽게 적용하게 만들고 퇴사했다. 그리고 최근에 관련 작업을 할 일이 있어, 관련 쪽을 내가 개발하고 있는데,  개발하면서 예상되는 문제들을 아주 쉽게 해결할 수 있었다. 그 친구가 잘 만들어 놓은 아스팔트 길에 달리는거 같은 느낌이다.

validation date range

  @Valid @RequestBody Form form , Errors errors if (errors.hasErrors()) { return Response. badRequest (errors.getAllErrors().get( 0 ).getDefaultMessage()) ; } @AssertTrue (message = " 시작일은 종료일보다 반드시 작아야 합니다 ." ) public boolean isValidDateRange () { return startedAt .before( endedAt ) ; }