콘텐츠로 이동

2025 06 25

2025-06-25

RabbitMQ 3.x -> 4.x

  • 3.x -> 4.x 제거사항
    • Classic Queue Mirroring 제거
      • 성능저하, 관리 복잡성, 예측 불가한 장애 복구 등
    • Classic Queue 금지
      • 단일 노드 메시지 저장하는데, 안정성/확정성/장애 복구 측면에서 사용 금지
  • 3.x -> 4.x 변경사항
    • Quorom Queue: Raft consensus 알고리즘 기반으로 고가용성 큐를 디폴트로 사용
      • 여러 노드에 분산 저장 -> 장애 시에도 데이터 손실 없이 복구 가능
      • 데이터 일관성이 classic queue보다 좋음
      • at-least-once dead-lettering 지원
        • 최소 한번 이상 처리된 후에서 실패한 메시지를 DLQ로 보낼 수 있음
    • 프로토콜 자체의 호환성은 유지되기에, 이관의 문제는 크게 없음.
  • Quorum Queue
    • Raft 컨센서스 알고리즘에 기반을 둔 지속 가능/복제된 형태의 현대적 queue 타입
    • 고가용성/장애 대비 복제가 필요한 환경에서 디폴트로 고려
    • 데이터 안정성 + 신뢰할 수 있는 리더 선출 => classic queue의 해결책
    • at-least-once dead-lettering 사용 가능
  • Virtual host (vhost)
    • RabbitMQ 내의 하나의 서버(브로커) 내에서 여러개의 논리적으로 완전히 분리된 메시징 환경 제공
    • vhost는 독립적으로 Queue, Exchange, Binding, 사용자 권한 등 관리. 각 vhost 별 리소스/권한 분리됨
    • 특징
      1. 논리적 분리: 각자의 리소스를 충돌없이 사용할 수 있게 해줌. queue/exchange/binding 등이 타 vhost와 영향 X
      2. 접근제어 및 보안: vhost 별로 리소스 권한 부여 가능
      3. 환경/도메인 분리: vhost 분리해 오버라이드 충돌 방지 가능.
      4. 이슈 격리: 타 vhost에 이슈 전파 안됨. 논리적으로 제한 가능
    • 동작 방식
      • 생성/관리: 콘솔에서 vhost 추가 가능
      • 접속: RabbitMQ 연결시 접속할 vhost 명시 가능. 권한 있어야만 연결 허용.
      • 유의점: vhost 별 queue/exchange 직접 연결 X