[SpringBoot/RabbitMQ] RabbitMQ docker compose 설정

binda·2024년 9월 9일

프로젝트 정리

목록 보기
5/9

먼저
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 ?

  • RabbitMQ는 Erlang VM 위에서 동작하며, 여러 RabbitMQ 노드를 클러스터링할 때 Erlang 쿠키를 사용
  • 클러스터간 노드 통신을 보호하는 보안 매커니즘

(하지만 현재 프로젝트는 단일 노드만 사용해도 무방할 것 같아서 사용하지 않았음)

++
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
로 접속하여 노드의 상태를 확인할 수 있음

profile
🍤

0개의 댓글