A. Durability 설정이 durable이고, Delivery mode가 persistent 라면 메시지가 남아 있다.
RabbitMQ 실행
우선 RabbitMQ를 실행하자.
도커를 사용한다면 아래 명령어로 쉽게 RabbitMQ를 실행할 수 있다.
/Users/taptorestart 부분은 여러분의 경로로 수정하면 된다.
참고: rabbitmq dockerhub
docker run --name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-v /Users/taptorestart/rabbitmq:/var/lib/rabbitmq \
-d rabbitmq:3.11.10-management
실행했으면 접속하자.
http://localhost:15672/ 로 접속하고 id, password는 guest, guest이다. 변경하고 싶다면 도커 실행시 환경변수로 추가하면 된다.
Durability를 Durable로 설정한 큐
상단 메뉴 중 Queues를 눌러서 큐를 하나 추가하자.
이때 Durability(영속성)를 Durable(영속성이 있는)로 하자.
durable_queue가 추가되었다. durable_queue를 눌러서 큐로 들어가서 메시지를 추가하자.
Delivery mode - Non-persistent
아래로 스크롤 하다보면 Publish message란 게 있다.
기본 Delivery mode 1. Non-persistent로 원하는대로 입력해서 Publish message를 누른다. 그러면 메시지가 큐에 들어간다.
메시지가 들어간 것을 확인할 수 있다.
이제 도커에서 종료하고 재시작하자.
도커에서 종료를 눌렀다.
Error: could not connect ... 서버 연결할 수 없다고 에러 메시지가 나온다.
다시 도커를 시작하자!
메시지가 사라졌다! Non-persistent, 즉 비지속적인 메시지니 당연하다고 볼 수 있다.
Delivery mode - Persistent
다시 메시지를 추가하자. 이번에는 Persistent로 Delivery mode를 설정하자.
다시 메시지가 추가된 것을 볼 수 있다.
다시 도커 종료.
그리고 재시작.
이번에는 메시지가 살아난 것을 볼 수 있다. Persistant 지속적으로 설정한 메시지니 당연하다고 볼 수 있다.
Get Messages를 눌러보면
Persistent message란 Payload가 실린 것을 확인할 수 있다.
Durability를 transient로 설정한 큐
새로 큐를 만들자.
이번 큐는 Durability를 transient, 일시적인으로 설정하자.
그리고 persistent로 설정해서 메시지를 추가하자.
메시지가 추가되었다.
다시 도커를 중지하고 시작하자.
transient_queue는 큐 자체가 사라졌다! 일시적인 큐였으니 어떻게 보면 당연하다. 당연히 메시지도 사라졌다.
durable_queue에 있는 메시지는 다시 살아난 것을 볼 수 있다.