먼저
rabbitMQ 의 새로운 관리자를 생성한다.
🐰 RabbitMQ CLI를 통해 추가 : 새로운 관리자 생성
rabbitmqctl add_user {admin} {strongpassword}
rabbitmqctl set_user_tags {admin} administrator
rabbitmqctl set_permissions -p / {admin} ".*" ".*" ".*"
🐰 RabbitMQ와 springBoot 연동
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Value("${RABBITMQ_HOST}")
private String rabbitmqHost;
@Value("${RABBITMQ_PORT}")
private int rabbitmqPort;
@Value("${RABBITMQ_USER}")
private String rabbitmqUser;
@Value("${RABBITMQ_PASS}")
private String rabbitmqPass;
@Value("${RABBITMQ_VHOST}")
private String rabbitmqVhost;
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app")
.enableStompBrokerRelay("/topic")
.setRelayHost(rabbitmqHost)
.setVirtualHost(rabbitmqVhost)
.setRelayPort(rabbitmqPort)
.setClientLogin(rabbitmqUser)
.setClientPasscode(rabbitmqPass)
.setSystemLogin(rabbitmqUser)
.setSystemPasscode(rabbitmqPass);
}
🐰 docker-compose.yml 추가
services:
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
environment:
RABBITMQ_ERLANG_COOKIE: ${RABBITMQ_ERLANG_COOKIE}
RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASS}
ports:
- "5672:5672" # AMQP 포트
- "61613:61613" # STOMP 포트
- "15672:15672" # 관리 UI 포트
🍪 RABBITMQ_ERLANG_COOKIE ?
(하지만 현재 프로젝트는 단일 노드만 사용해도 무방할 것 같아서 사용하지 않았음)
++
Spring 애플리케이션들이 RabbitMQ에 의존하도록 설정
app1:
image: cubetalk-server:1.0
container_name: spring-app1-container
ports:
- "8081:8080"
depends_on:
- mongodb
- rabbitmq
environment:
SPRING_DATA_MONGODB_URI: mongodb+srv://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@${MONGO_HOST}/${MONGO_DB_NAME}?retryWrites=true&w=majority
🐰 docker compose 실행
여기서는 특정컨테이너(rabbitmq)만 실행
docker compose up -d rabbitmq

잘 실행되는 것을 확인할 수 있다.
실행중인 컨테이너 목록 확인
docker ps
이렇게 설정을 완료했다면
http://localhost:15672
로 접속하여 노드의 상태를 확인할 수 있음
