feat: 방 삭제 알림을 개인 큐로 전송#111
Conversation
|
Warning Review limit reached
More reviews will be available in 43 minutes and 36 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthrough방 삭제 이벤트 처리에서 활성 멤버들에게 전송되는 실시간 알림의 전달 방식을 변경합니다. 기존 STOMP 브로드캐스트( Changes방 삭제 알림 개인 큐 전환
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related issues
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
src/test/java/com/howaboutus/backend/messages/listener/RoomDeletedMessageListenerTest.java (1)
20-20: ⚡ Quick win사용하지 않는
SimpMessagingTemplate목과 import를 제거하세요.리스너가 더 이상
SimpMessagingTemplate에 의존하지 않으므로 이 목과 import는 사용되지 않는 잔여 코드입니다(설계 문서에서도 제거 대상으로 명시됨). 정리하면 테스트 의도가 더 명확해집니다.♻️ 잔여 코드 제거
-import org.springframework.messaging.simp.SimpMessagingTemplate;`@Mock` private UserRoomActionBroadcaster userRoomActionBroadcaster; - `@Mock` - private SimpMessagingTemplate messagingTemplate; - `@InjectMocks` private RoomDeletedMessageListener listener;Also applies to: 28-29
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/test/java/com/howaboutus/backend/messages/listener/RoomDeletedMessageListenerTest.java` at line 20, Remove the unused SimpMessagingTemplate mock and its import from the test class RoomDeletedMessageListenerTest: delete the import of org.springframework.messaging.simp.SimpMessagingTemplate and remove the corresponding `@Mock` or field declaration (e.g., any SimpMessagingTemplate simulated instance) and any unused references to it so the test only contains actual dependencies of RoomDeletedMessageListenerTest.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@src/main/java/com/howaboutus/backend/messages/listener/RoomDeletedMessageListener.java`:
- Around line 27-28: The loop sending ROOM_DELETED should not let one user's
failure stop others; wrap each call to
userRoomActionBroadcaster.sendToUser(userId, payload) in its own try/catch
inside the iteration (the block iterating event.memberUserIds()), so exceptions
are caught and logged (including userId and the exception) and the loop
continues; update RoomDeletedMessageListener accordingly to preserve best-effort
delivery semantics.
---
Nitpick comments:
In
`@src/test/java/com/howaboutus/backend/messages/listener/RoomDeletedMessageListenerTest.java`:
- Line 20: Remove the unused SimpMessagingTemplate mock and its import from the
test class RoomDeletedMessageListenerTest: delete the import of
org.springframework.messaging.simp.SimpMessagingTemplate and remove the
corresponding `@Mock` or field declaration (e.g., any SimpMessagingTemplate
simulated instance) and any unused references to it so the test only contains
actual dependencies of RoomDeletedMessageListenerTest.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 2ecd8ce3-2f47-421f-92a8-c88388bede3e
📒 Files selected for processing (7)
docs/ai/features.mddocs/superpowers/plans/2026-05-29-room-delete-private-queue.mddocs/superpowers/specs/2026-05-29-room-delete-private-queue-design.mdsrc/main/java/com/howaboutus/backend/messages/listener/RoomDeletedMessageListener.javasrc/main/java/com/howaboutus/backend/realtime/service/dto/RoomLifecyclePayload.javasrc/main/java/com/howaboutus/backend/realtime/service/dto/RoomLifecycleType.javasrc/test/java/com/howaboutus/backend/messages/listener/RoomDeletedMessageListenerTest.java
💤 Files with no reviewable changes (2)
- src/main/java/com/howaboutus/backend/realtime/service/dto/RoomLifecyclePayload.java
- src/main/java/com/howaboutus/backend/realtime/service/dto/RoomLifecycleType.java
There was a problem hiding this comment.
Pull request overview
This PR changes room deletion realtime delivery from a room-scoped lifecycle topic to each active member’s personal /user/queue/rooms channel, aligning deletion notifications with the existing user room action flow.
Changes:
RoomDeletedMessageListenernow sendsUserRoomActionPayload(actionType=ROOM_DELETED)to each active member viaUserRoomActionBroadcaster.- Removed obsolete room lifecycle payload/type DTOs.
- Updated tests and documentation/spec/plan files for the new private-queue contract.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
src/main/java/com/howaboutus/backend/messages/listener/RoomDeletedMessageListener.java |
Replaces lifecycle topic broadcast with per-user room action sends. |
src/main/java/com/howaboutus/backend/realtime/service/dto/RoomLifecyclePayload.java |
Removes obsolete lifecycle payload DTO. |
src/main/java/com/howaboutus/backend/realtime/service/dto/RoomLifecycleType.java |
Removes obsolete lifecycle enum. |
src/test/java/com/howaboutus/backend/messages/listener/RoomDeletedMessageListenerTest.java |
Verifies each event member receives a ROOM_DELETED user action. |
docs/ai/features.md |
Documents the new /user/queue/rooms deletion notification contract. |
docs/superpowers/specs/2026-05-29-room-delete-private-queue-design.md |
Adds design rationale and realtime contract details. |
docs/superpowers/plans/2026-05-29-room-delete-private-queue.md |
Adds implementation/verification plan for the change. |
|



변경 내용
/user/queue/rooms개인 큐로ROOM_DELETED액션을 전송하도록 변경했습니다.RoomLifecyclePayload/RoomLifecycleType을 제거하고, 공통UserRoomActionPayload/UserRoomActionType.ROOM_DELETED흐름을 사용하도록 정리했습니다.변경 이유
KICKED)과 방 삭제(ROOM_DELETED)를 같은 유저 단위 방 액션 채널(/user/queue/rooms)에서 처리하도록 realtime 계약을 일관화했습니다.테스트
./gradlew build/review-code-against-docs스킬로 검증체크리스트
하네스 변경 체크리스트
Summary by CodeRabbit
릴리스 노트
개선
문서