Skip to content

Commit f7a8f1c

Browse files
JIWONKIMSclaude
andcommitted
feat(be): Add RabbitMQ infrastructure and configuration
- Add docker-compose.yml for local RabbitMQ development - Configure RabbitMQ in application.yml and application-prod.yml - Add RabbitMQ container setup in Terraform (infra/main.tf) - Add RabbitMQ environment variables to deploy.yml - Remove docker-compose.yml from .gitignore for team sharing - Connection timeout and heartbeat settings for production stability 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 78d0aee commit f7a8f1c

File tree

6 files changed

+75
-2
lines changed

6 files changed

+75
-2
lines changed

.github/workflows/deploy.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,11 @@ jobs:
234234
-e REDIS_HOST=redis_1 \
235235
-e REDIS_PORT=6379 \
236236
-e REDIS_PASSWORD="${PASSWORD_1}" \
237+
-e RABBITMQ_HOST=rabbitmq_1 \
238+
-e RABBITMQ_PORT=5672 \
239+
-e RABBITMQ_USERNAME=admin \
240+
-e RABBITMQ_PASSWORD="${PASSWORD_1}" \
241+
-e RABBITMQ_STOMP_PORT=61613 \
237242
"${IMAGE}"
238243
239244
# ---------------------------------------------------------

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,4 @@ build/reports/
7575
coverage/
7676

7777
# Test file
78-
index.html
79-
docker-compose.yml
78+
index.html

docker-compose.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
version: "3.8"
2+
3+
services:
4+
rabbit:
5+
image: rabbitmq:3-management # 버전 명시 권장 (예: 3.13-management)
6+
container_name: rabbitmq-1
7+
ports:
8+
- "5672:5672" # AMQP (Spring ↔ RabbitMQ)
9+
- "61613:61613" # STOMP (Relay가 여기에 붙음)
10+
- "15672:15672" # Management UI (로컬에서만)
11+
environment:
12+
RABBITMQ_DEFAULT_USER: admin
13+
RABBITMQ_DEFAULT_PASS: admin
14+
volumes: # 영속화가 필요할 때만 유지
15+
- ./dockerProjects/rabbitmq-1/volumes/etc/rabbitmq:/etc/rabbitmq
16+
- ./dockerProjects/rabbitmq-1/volumes/var/lib/rabbitmq:/var/lib/rabbitmq
17+
- ./dockerProjects/rabbitmq-1/volumes/var/log/rabbitmq:/var/log/rabbitmq
18+
command: >
19+
sh -c "
20+
rabbitmq-plugins enable rabbitmq_management &&
21+
rabbitmq-plugins enable rabbitmq_stomp &&
22+
rabbitmq-server
23+
"

infra/main.tf

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,34 @@ CREATE DATABASE \"${var.app_1_db_name}\" OWNER team11;
263263
GRANT ALL PRIVILEGES ON DATABASE \"${var.app_1_db_name}\" TO team11;
264264
"
265265
266+
# rabbitmq 설치
267+
docker run -d \
268+
--name rabbitmq_1 \
269+
--restart unless-stopped \
270+
--network common \
271+
-p 5672:5672 \
272+
-p 61613:61613 \
273+
-p 15672:15672 \
274+
-e RABBITMQ_DEFAULT_USER=admin \
275+
-e RABBITMQ_DEFAULT_PASS=${var.password_1} \
276+
-e TZ=Asia/Seoul \
277+
-v /dockerProjects/rabbitmq_1/volumes/data:/var/lib/rabbitmq \
278+
rabbitmq:3-management
279+
280+
# RabbitMQ가 준비될 때까지 대기
281+
echo "RabbitMQ가 기동될 때까지 대기 중..."
282+
until docker exec rabbitmq_1 rabbitmqctl status &> /dev/null; do
283+
echo "RabbitMQ가 아직 준비되지 않음. 5초 후 재시도..."
284+
sleep 5
285+
done
286+
echo "RabbitMQ가 준비됨. STOMP 플러그인 활성화 중..."
287+
288+
# RabbitMQ STOMP 플러그인 활성화
289+
docker exec rabbitmq_1 rabbitmq-plugins enable rabbitmq_stomp
290+
docker exec rabbitmq_1 rabbitmq-plugins enable rabbitmq_management
291+
292+
echo "RabbitMQ 설치 및 설정 완료!"
293+
266294
echo "${var.github_access_token_1}" | docker login ghcr.io -u ${var.github_access_token_1_owner} --password-stdin
267295
268296
END_OF_FILE

src/main/resources/application-prod.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,16 @@ spring:
3232
password: ${REDIS_PASSWORD:}
3333
database: 0
3434

35+
# RabbitMQ 설정 (WebSocket STOMP Relay용)
36+
rabbitmq:
37+
host: ${RABBITMQ_HOST}
38+
port: ${RABBITMQ_PORT}
39+
username: ${RABBITMQ_USERNAME}
40+
password: ${RABBITMQ_PASSWORD}
41+
stomp-port: ${RABBITMQ_STOMP_PORT}
42+
connection-timeout: 5000
43+
requested-heartbeat: 30
44+
3545
session:
3646
store-type: redis
3747
timeout: 30m

src/main/resources/application.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,14 @@ spring:
8181
max-idle: 8
8282
min-idle: 0
8383

84+
# RabbitMQ 설정 (WebSocket STOMP Relay용)
85+
rabbitmq:
86+
host: ${RABBITMQ_HOST:localhost}
87+
port: ${RABBITMQ_PORT:5672}
88+
username: ${RABBITMQ_USERNAME:admin}
89+
password: ${RABBITMQ_PASSWORD:admin}
90+
stomp-port: ${RABBITMQ_STOMP_PORT:61613}
91+
8492
# 세션 관리 (개발용: none, 운영용: redis)
8593
session:
8694
store-type: none # Redis 없어도 실행 가능하도록 변경

0 commit comments

Comments
 (0)