728x90 개발/Spring7 [WebClientRequestException] Pending acquire queue has reached its maximum size of 40 해결한 경험 서론 오늘 다룰 이슈는 pendingAcquireMaxCount에 관한 이야기입니다. 우리 팀에서는 광고 이벤트 트래킹 통계를 연동사 API를 통해 제공 받습니다. 연동사 마다 제공해주는 단위가 각각 다르며 특정 연동사는 다수의 Report API를 호출하여 DB에 적재해야 합니다. 이를 WebFlux를 사용하여 적재하는 과정 중 해당 에러가 발생하였습니다.에러 전문 열어보기더보기[2024-08-19 15:28:35,344] [ERROR] [] [boundedElastic-34] [c.m.d.r.v.a.ReportWebClientAdapter:79] : reportRequest Error occur. uri: {{URI}}, request: {{ReportRequest}}org.springframewo.. 2024. 9. 16. [MongoDB] MongoInterruptedException 해결하기 기존 배치 방식을 API에서 파일로 데이터를 받아 처리하도록 변경하면서 개발할 당시 다음과 같은 에러를 직면했다.Interrupted acquiring a permit to retrieve an item from the pool ; nested exception is com.mongodb.MongoInterruptedException: Interrupted acquiring a permit to retrieve an item from the poolError Log 전문 보기 (아래)더보기[pool-8-thread-2] [ERROR] [BatchDao:157] : Interrupted acquiring a permit to retrieve an item from the pool ; nested excep.. 2024. 6. 2. RecoverableDataAccessException 해결한 경험 1. 들어가며 어느 순간부터 특정 배치 스케줄러가 돌면 RecoverableDataAccessException이 발생하기 시작하였다. RecoverableDataAccessException은 JDBC 커밋 도중에 문제가 있을 경우 예외를 발생시킨다. 커넥션을 반환해줄때 이미 끊어져버린 커넥션을 사용하도록 반환해주어 DB와 통신하지 못했기 때문에 발생한다고 한다. 그럼 해당 Exception을 해결해보자. 2. 소스 분석하기 먼저, 다음 1시간 동안 배치가 도는 예시 소스이다. 아래 예시 소스를 보면서 문제가 될만한 부분이 있는지 생각해보자. # Controller@PostMapping("/batch/example")public ResponseEntity> fetchExample( @Reque.. 2024. 4. 28. [Spring Security] SecurityContextHolder와 Authentication 알아보기 스프링 시큐리티 아키텍쳐 스프링 시큐리티 아키텍쳐가 복잡하고 쉽지 않다. 부분별로 살펴보고 전체 그림을 맞춰본다 - (Divide and Conquer) SecurityContextHolder와 Authentication 위와 같이 Authentication객체 안에서 principal를 담고 SecurityContext으로 감싸고 한번 더 SecurityContextHolder로 감싼 구조이다. SecurityContextHolder : Authentication를 SecurityContext로 담고 있는 객체 SecurityContext : Authentication을 담고 있는 객체 Authentication : principal, authorities, credentials을 담고 있는 객체 pr.. 2023. 4. 19. Spring boot에 Swagger 적용하기 개요 API 인터페이스 관리는 스펙이 변할때 마다 일일이 수정하게 되면 생각보다 많은 비용이 드는데 Swagger를 이용하면 불필요한 비용을 줄일 수 있도록 API 문서화를 도와 단순하게 관리할 수 있다. 여기서 Swagge란, OAS(Open Api Specification)를 위한 프레임워크로 API 문서 자동화 및 테스트 기능이 있다. Swagger 적용 방법 우리는 많이 사용되는 Springfox를 이용해 swagger를 적용할 것이다. 프로젝트 버전 java : 11 spring-boot : 2.7.9 springfox-swagger : 3.0.0 1. 의존성 추가 dependencies{ implementation 'io.springfox:springfox-boot-starter:3.0.0' .. 2023. 3. 31. Spring security + JWT 구현 방식 개요 사이드 프로젝트를 진행하면서 사용자 API를 개발할때 Spring Security를 적용해 보고자 소스 분석 및 개발을 진행하며 글로 정리하게 되었다. 예제 소스는 여기(github)에서 확인 가능하다. Spring security 역할 Spring security는 filter을 통해 인증(Authenticatio)과 권한(Authorization)을 확인한다. Filter 개념 Spring Security를 적용하기에 앞서 filter를 알아야 이해와 적용이 쉬울 것이다. 아마 처음 프로젝트를 개발하는 개발자들에게 filter에 대한 개념이 없었을 수도 있다. (필자도 그랬다) filter는 클라이언트 요청에 대해 사전에 걸러낼 수 있는 역할을 수행하며 요청(Request)와 응답(Respons.. 2023. 3. 29. Interceptor, DispatcherServlet이란? 회사 Return server에서 interceptor를 처음 보았다. 지금까지 해왔던 프로젝트에서는 interceptor를 사용하지 않았으나 이번에 알게 되어 간단히 요약해 보려 한다. 인터셉터(Interceptor)란? Interceptor는 말그대로 Controller에 들어오는 요청과 응답을 가로채는 역할로 DispatcherServlet이 실행된 뒤 호출된다. DispatcherServlet은 아래에서 설명하겠다. 먼저, Interceptor는 HandlerInterceptor 인터페이스를 반드시 implements 해야한다. HandlerInterceptor안에 있는 메서드인 preHandle()은 Controller보다 먼저 실행되는 메서드이며, postHandle()은 Controller가.. 2021. 7. 16. 이전 1 다음 728x90