220113_TIL(목)

오늘 한 일

  • 어제 도커에 올린 컨테이너에 접속하는 방법은 찾았다
    • 알고보니 도커의 컨테이너 접속은 내PC IP와 같다. (물론 내부 private IP는 다르지만)
    • -p 옵션으로 포트포워딩을 해주면 내 컴퓨터 IP : 포트포워딩 포트로 접속할 수 있다.
  • 문제가 생겼던 부분은 pc에 설치한 rabbitmq와 도커에 설치한 그것의 포트번호가 같았다.
    • 스프링을 실행해서 rabbitmq에 접속하는데, 도커로 접속하는줄 알았는데 내 로컬로 접속을 해서 로그인 정보가 맞지 않아서 오류가 났던 것이었다.

익명큐 미러링 구성

  • 클러스터링, 미러링 구성을 완료하고, 미러링 정책은 생성되는 모든 큐에 대해서 적용이 가능하도록 했다.
  • 내가 구성한 방식은 @RabbitListener에서 Consumer에서 익명큐(auto-generated queue)를 생성하는 동시에 exchange와 binding을 하는 방식이었다.
  • 그런데 이렇게 자동생성된 큐만 미러링이 안돼서 찾아보니 rabbitmq 문서에는 익명큐는 미러링 정책을 할 수 없다고 나와있어서 당황쓰;;;;
  • 그치만 하지 않으면 지금까지 구성한 rabbitmq를 모두 갈아엎어야 하는 상황이 올 수도 있기 때문에 열심히 찾아보고 해결방법을 찾았다.
  • spring으로 생성되는 익명큐는 spring.gen- 이라는 prefix가 붙는데, 내부적으로는 amq.으로 시작하는 네이밍을 따로 붙이는 듯 했다.
  • 그래서 listener쪽이 아닌 서버가 실행되는 configuration 설정쪽에서 큐를 만들고, 그 큐의 이름만 connection에서 가져와서 listen할 수 있으면 되겠다고 생각했다.
  • 사용하는 서비스 쪽에서 생성자 주입으로 익명큐를 생성하니 amq.으로 시작하는 익명큐가 생성되었다.
  • 그리고 큐이름을 가져와서 listen을 할건데, 내가 지정한 deliveryCallback으로 listen을 할거라는 옵션을 지정해주는게 있었다. (명칭은 까먹음)

조만간 rabbitmq에 대해 포스팅을 올릴 예정이다. 익명큐를 사용하는 방식을 버리지 않으면서 해결할 수 있어서 너무 기분이 좋다. 아무튼 해결!!

댓글남기기