개발자 경험 & 팁5 배치 처리 1. 프로젝트 내 배치 처리 구현1.1 구독 갱신 배치 처리@Component@RequiredArgsConstructorpublic class SubscriptionScheduler { @Scheduled(cron = "0 0 0 * * *") // 매일 자정 @Transactional public void processSubscriptionRenewals() { log.info("Starting daily subscription renewal processing"); LocalDateTime now = LocalDateTime.now(); List dueSubscriptions = subscriptionRepository .fi.. 2024. 11. 19. RabbitMQ - 406 에러 channel error; protocol method: #method(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 1, class-id=60, method-id=80)원인 :기존에 생성된 큐의 설정과 현재 애플리케이션에서 설정하려는 큐의 속성이 일치하지 않아서 발생함.특히 메시지 승인 과정에서 일반적으로 발생하는데, Quere를 선언하는 부분이 두곳이었고, 다른 클래스로 큐가 선언되고 있었음.해결 : 큐는 singleton으로 구현되어야 하기 때문에, 큐 설정을 다르게 하고 같은 이름을 쓰거나 두 곳에서 중복적으로 선언하면 오류가 남.Publisher와 Producer 통합.package com.gameservice.cre.. 2024. 10. 19. git pull 실패 git flow 전략은 개발 서버에서 pull 을 받고 개발 서버로 부터 feature 브랜치를 하나 생성하여 feature 브랜치 위에서 작업을 한다. 이후의 작업은 기존의 git flow 방식대로라면 develope 브랜치에 merge를 하고 push를 하는 방식이었겠지만, 충돌과 여러 리소스를 줄이기 위해서 feature 상태에서 푸시를 하면 이후에 담당자분께서 해당 코드를 merge 하고 push 하는 방식으로 작업이 진행되었다. git checkout develope 일단 push를 했기 때문에 다시 언제든 내 코드를 불러올 수 있다. 만약 불러 올 수 없다면 로컬에 저장되어 있기 때문에 로컬에서 불러오면 된다. 그렇기 때문에 develope 브랜치로 과감하게 checkout을 진행한다.. 2024. 7. 30. exception just for purpose of providing stack trace 오류 JPA를 통해 DELETE 로직을 실행 중에 발생했다. 이 오류의 원인은 여러가지이다. 데이터 존재 여부:실제로 해당 ID의 데이터가 데이터베이스에 존재하는지 확인.테스트 환경과 운영 환경의 데이터베이스가 다를 수 있음.트랜잭션 관리:삭제 작업 전에 조회가 제대로 이루어지고 있는지 확인.트랜잭션 격리 수준이 적절한지 확인.JPA 캐시:JPA 1차 캐시나 2차 캐시로 인해 최신 데이터를 반영하지 못할 수 있음.ID 타입 불일치:전달받은 ID의 타입과 엔티티의 ID 타입이 일치하는지 확인.레포지토리 메소드:사용 중인 레포지토리 메소드가 적절한지 확인. (예: findById vs getOne).엔티티 매핑:엔티티와 테이블 매핑이 올바른지 확인. 이 중 4번 문제가 원인이었던 것! 진행하던 업무는FK로 참조.. 2024. 7. 23. MariaDB 설치 오류 mysql을 사용하다가 MariaDB를 설치해서 사용해야 했다. - 개발환경 : MAC Book Pro 19' 그러나 mariadb 설치 시 오류가 발생했다. Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock(2) 오류가 났었다. 처음 MariaDB 11버전을 설치했을 때는 문제 없이 실행이 되었는데, 지우고 나서 다시 깔았더니 저런 오류가 발생했다. (1) 완전삭제가 안된 줄 알고 완전삭제를 하려 했었음. 11버전과 mysql이 남아있는 곳들마다 완전 삭제하는 글들을 찾았음. 오류가 33번으로 한번 바뀐 적 있지만 touch를 통해서 인위적으로 tmp/mysql.sock를 생성해서 생긴 오류였음. (2) 해결.. 2024. 7. 18. 이전 1 다음