feat: RabbitMQ 인프라 설정 (Exchange/Queue) (#102) #103

Merged
seonkyu.kim merged 1 commits from feature/#102-rabbitmq-infrastructure into develop 2026-02-10 06:39:34 +00:00
Owner

📋 작업 요약

  • RabbitMQ Exchange/Queue 선언 및 연결 설정 구현
  • Push/Schedule 메시지 스키마(DTO) 정의
  • Producer(PushQueueService) 구현으로 큐 발행 기능 확보

Closes #102

🛠️ 작업 내용 (Changes)

  • SPMS.Application/Settings/RabbitMQSettings.cs — RabbitMQ 설정 POCO (Exchange, Queue, TTL 등)
  • SPMS.Application/DTOs/Push/PushMessageDto.cs — 일반 발송 메시지 스키마
  • SPMS.Application/DTOs/Push/PushTargetDto.cs — 발송 대상 정보 (device_ids, tags, all, file_id)
  • SPMS.Application/DTOs/Push/ScheduleMessageDto.cs — 예약 발송 메시지 스키마
  • SPMS.Application/Interfaces/IPushQueueService.cs — 큐 발행 인터페이스
  • SPMS.Infrastructure/Messaging/RabbitMQConnection.cs — 연결 관리 (AutomaticRecovery, Heartbeat 60s)
  • SPMS.Infrastructure/Messaging/RabbitMQInitializer.cs — IHostedService로 Exchange/Queue 자동 선언
  • SPMS.Infrastructure/Messaging/PushQueueService.cs — 큐 발행 구현 (Persistent, JSON)
  • SPMS.Infrastructure/DependencyInjection.cs — RabbitMQ DI 등록
  • SPMS.Infrastructure/SPMS.Infrastructure.csproj — RabbitMQ.Client 7.2.0 + 의존 패키지 추가
  • SPMS.API/appsettings.json — RabbitMQ 설정 섹션 확장

📢 리뷰어 참고 사항 (To Reviewers)

  • RabbitMQ.Client 7.2.0 (최신 v7) 기반으로 전면 async API 사용
  • RabbitMQInitializer가 IHostedService로 앱 시작 시 Exchange/Queue를 자동 선언
  • Exchange: spms.push.exchange (Direct, Durable), Queue 2개 (push, schedule) TTL 24시간
  • PushQueueService는 메시지 발행 시 채널을 생성하여 사용 (초기 구현, 추후 최적화 가능)
  • PushTargetDto.ValueJsonElement?로 유연하게 처리 (배열, 숫자, null 모두 수용)
  • 실제 RabbitMQ 서버 연결은 secrets.json의 HostName/UserName/Password 설정 필요

체크리스트 (Self Checklist)

  • 빌드(Build)가 성공적으로 수행되었는가?
  • 모든 단위 테스트(Unit Test)를 통과하였는가?
  • 불필요한 로그나 주석을 제거하였는가?
  • 컨벤션(Clean Architecture, Naming)을 준수하였는가?
  • 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가?

📸 스크린샷 / 테스트 로그 (Screenshots/Logs)

빌드했습니다.
    경고 0개
    오류 0개
## 📋 작업 요약 - RabbitMQ Exchange/Queue 선언 및 연결 설정 구현 - Push/Schedule 메시지 스키마(DTO) 정의 - Producer(PushQueueService) 구현으로 큐 발행 기능 확보 ## 🔗 관련 이슈 (Related Issues) Closes #102 ## 🛠️ 작업 내용 (Changes) - [x] `SPMS.Application/Settings/RabbitMQSettings.cs` — RabbitMQ 설정 POCO (Exchange, Queue, TTL 등) - [x] `SPMS.Application/DTOs/Push/PushMessageDto.cs` — 일반 발송 메시지 스키마 - [x] `SPMS.Application/DTOs/Push/PushTargetDto.cs` — 발송 대상 정보 (device_ids, tags, all, file_id) - [x] `SPMS.Application/DTOs/Push/ScheduleMessageDto.cs` — 예약 발송 메시지 스키마 - [x] `SPMS.Application/Interfaces/IPushQueueService.cs` — 큐 발행 인터페이스 - [x] `SPMS.Infrastructure/Messaging/RabbitMQConnection.cs` — 연결 관리 (AutomaticRecovery, Heartbeat 60s) - [x] `SPMS.Infrastructure/Messaging/RabbitMQInitializer.cs` — IHostedService로 Exchange/Queue 자동 선언 - [x] `SPMS.Infrastructure/Messaging/PushQueueService.cs` — 큐 발행 구현 (Persistent, JSON) - [x] `SPMS.Infrastructure/DependencyInjection.cs` — RabbitMQ DI 등록 - [x] `SPMS.Infrastructure/SPMS.Infrastructure.csproj` — RabbitMQ.Client 7.2.0 + 의존 패키지 추가 - [x] `SPMS.API/appsettings.json` — RabbitMQ 설정 섹션 확장 ## 📢 리뷰어 참고 사항 (To Reviewers) - RabbitMQ.Client 7.2.0 (최신 v7) 기반으로 전면 async API 사용 - `RabbitMQInitializer`가 IHostedService로 앱 시작 시 Exchange/Queue를 자동 선언 - Exchange: `spms.push.exchange` (Direct, Durable), Queue 2개 (push, schedule) TTL 24시간 - `PushQueueService`는 메시지 발행 시 채널을 생성하여 사용 (초기 구현, 추후 최적화 가능) - `PushTargetDto.Value`는 `JsonElement?`로 유연하게 처리 (배열, 숫자, null 모두 수용) - 실제 RabbitMQ 서버 연결은 secrets.json의 HostName/UserName/Password 설정 필요 ## ✅ 체크리스트 (Self Checklist) - [x] 빌드(Build)가 성공적으로 수행되었는가? - [x] 모든 단위 테스트(Unit Test)를 통과하였는가? - [x] 불필요한 로그나 주석을 제거하였는가? - [x] 컨벤션(Clean Architecture, Naming)을 준수하였는가? - [x] 기밀 정보(비밀번호, 키 등)가 하드코딩 되어있지 않은가? ## 📸 스크린샷 / 테스트 로그 (Screenshots/Logs) ``` 빌드했습니다. 경고 0개 오류 0개 ```
seonkyu.kim added 1 commit 2026-02-10 06:34:47 +00:00
seonkyu.kim added the
Priority
Urgent
Status
In Progress
Type
Feature
labels 2026-02-10 06:35:02 +00:00
seonkyu.kim self-assigned this 2026-02-10 06:35:04 +00:00
seonkyu.kim added this to the Phase 3: 메시지 & Push Core milestone 2026-02-10 06:35:07 +00:00
seonkyu.kim requested review from Owners 2026-02-10 06:35:20 +00:00
seonkyu.kim merged commit 08aa74138f into develop 2026-02-10 06:39:34 +00:00
seonkyu.kim deleted branch feature/#102-rabbitmq-infrastructure 2026-02-10 06:39:50 +00:00
seonkyu.kim added
Status
Done
and removed
Status
In Progress
labels 2026-02-10 06:40:12 +00:00
Sign in to join this conversation.
No description provided.