SocketUtils.findAvailableTcpPort() BindException: 주소가 이미 사용 중입니다 Jenkins Build periodically Schedule 기능을 활용하여 스프링 배치를 주기적으로 빌드해 주고 있다. . 그러던 어느 날..🌅 Jenkins 에 새로운 배치 아이템이 추가될수록 아래 에러가 종종 발생하기 시작했다. org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server ... Caused by: java.net.BindException: 주소가 이미 사용 중입니다 . 로그를 보아하니.. 포트는 랜덤으로 할당되고 있는 것 같아서 관련 코드를 확인해 보았다...
Spring Batch & Jenkins 구동 방식 개선 현재 실무에서 스프링 배치의 구동 방식이 아래와 같다 Deploy Tool 배치 프로젝트 특정 브랜치의 jar 파일을 배치 서버에 배포 Jenkins Build periodically - Schedule 설정 Execute shell 을 통한 배치 실행 쉘에는 파라미터, 프로파일 설정과 jar 파일로 배치 잡을 실행하는 커멘드가 포함 현상 현재 구동 방식에서는 한 가지(한 가지가 아닐 수도 있지만..) 문제가 있었다. . jar 파일이 배포되는 사이 배치 잡이 실행되거나, 배치 잡이 실행되는 사이 jar 파일이 배포되면 Class 정보를 찾을 수 없다는 예외(java.lang.NoClassDefFoundError, java.lang.ClassNot..
Spring Batch Test Spring Batch를 테스트해 보는 시간을 가져보려고 한다. Spring Batch와 아직 어색어색하니까..😬 조금씩 친해지면서 테스트 관련 내용을 업데이트할 예정이다.🙄 준비 배치 테스트를 위해 spring-batch-test 의존성이 필요 testImplementation("org.springframework.batch:spring-batch-test") 통합 테스트 통합 테스트에 필요한 어노테이션들을 먼저 간략히 살펴보면, 일반 스프링 테스트 코드를 작성하면서 많이 보았던 익숙한 어노테이선들도 있을 것이다. @Slf4j 로깅을 위해 선언 @ExtendWith(SpringExtension.class) Junit5의 라이프사이클에 Test에서 사용할 기능 확장을 위해..
Message Queue (Apach Kafka) A long~ time ago 는 아니고, 사알짝 머언 옛날부터.. 🐅 많은 기업에서 Message Queue 를 아주 활발하게 사용했다고 하는데.. Message Queue가 뭣인지 한번 탐구해 보려고 한다. 🕵 다들 돋보기 들고 따라와 보시게! 🤠🔎 . 참고로, 다양한 Message Queue 중 높은 처리량과 좋은 성능을 지닌 Kafka 중심의 설명이 될 것 같다.🧐 최범균님의 kafka 조금 아는 척하기 영상이 정말 많은 도움이 되었다. 메시지 지향 미들 웨어(Message Oriented Middleware: MOM)는 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서의 데이터 송수신을 의미 MOM을 구현한 시스템이 메시지 큐(Message ..