Skip to content

Commit 106e997

Browse files
authored
refactor: Seat WebSocket debug로깅 추가
* refactor: websocket동작 info로깅으로 테스트완료, 프로덕션에서는 debug레벨로 설정해서 로그가 남지 않도록 설정 * refactor: seat 웹소켓 이벤트 발행시점 AFTER_COMMIT으로 트랜잭션 종료 이후시점으로 보장 * chore: paymentService TODO 주석 추가
1 parent 9410960 commit 106e997

3 files changed

Lines changed: 22 additions & 7 deletions

File tree

backend/src/main/java/com/back/api/payment/payment/service/PaymentService.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,15 @@
2121

2222
/**
2323
* Payment 관련 비즈니스 로직 처리
24-
* 큐,좌석,티켓의 상태변화 과도하게 책임 -> 추후 리팩토링 필요
24+
* TODO: PG 연동 시 트랜잭션 경계 재설정 필요
25+
*
26+
* [설계 방향]
27+
* 1. PG API 호출: 트랜잭션 밖으로 이동
28+
* 2. 핵심 DB 변경만 @Transactional
29+
* 3. Queue/Notification: @TransactionalEventListener(AFTER_COMMIT)
30+
*
31+
* [리팩토링 시점]
32+
* - 실제 PG 연동 구현 시 (TossPaymentClient 등)
2533
*/
2634
@Service
2735
@RequiredArgsConstructor
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
package com.back.api.seat.event;
22

3-
import org.springframework.context.event.EventListener;
43
import org.springframework.stereotype.Component;
4+
import org.springframework.transaction.event.TransactionPhase;
5+
import org.springframework.transaction.event.TransactionalEventListener;
56

67
import com.back.api.seat.dto.response.SeatStatusMessage;
78

89
import lombok.RequiredArgsConstructor;
10+
import lombok.extern.slf4j.Slf4j;
911

12+
@Slf4j
1013
@Component
1114
@RequiredArgsConstructor
1215
public class SeatEventHandler {
1316

1417
private final SeatWebSocketPublisher publisher;
1518

16-
@EventListener
19+
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
1720
public void handleSeatStatus(SeatStatusMessage msg) {
21+
log.debug("SEAT_EVENT_RECEIVED eventId={} seatId={} status={}", msg.eventId(), msg.seatId(), msg.status());
1822
publisher.publish(msg);
1923
}
2024
}

backend/src/main/java/com/back/api/seat/event/SeatWebSocketPublisher.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,20 @@
66
import com.back.api.seat.dto.response.SeatStatusMessage;
77

88
import lombok.RequiredArgsConstructor;
9+
import lombok.extern.slf4j.Slf4j;
910

11+
@Slf4j
1012
@Service
1113
@RequiredArgsConstructor
1214
public class SeatWebSocketPublisher {
1315

1416
private final SimpMessagingTemplate messagingTemplate;
1517

1618
public void publish(SeatStatusMessage msg) {
17-
messagingTemplate.convertAndSend(
18-
"/topic/events/" + msg.eventId() + "/seats",
19-
msg
20-
);
19+
String destination = "/topic/events/" + msg.eventId() + "/seats";
20+
log.debug("WS_PUBLISH destination={} eventId={} seatId={} status={}", destination, msg.eventId(), msg.seatId(),
21+
msg.status());
22+
messagingTemplate.convertAndSend(destination, msg);
23+
log.debug("WS_PUBLISH_COMPLETE destination={}", destination);
2124
}
2225
}

0 commit comments

Comments
 (0)