4. • Consumer는 Queue에서 메시지를 받으면 Ack를 보내야 함
• Consumer가 Ack를 보내지 않고 죽거나 연결이 끊어지면
다른 Consumer에 메시지가 다시 배정됨
• Unacked 메시지가 많을수록 RabbitMQ가 메모리를 많이
사용함
• 프로그램에서 autoAck=true로 설정하면 메시지를 받자마
자 Ack를 보냄
(이 때, Consumer가 긴 작업 중 죽으면 메시지가 손실됨)
Message Acknowledgment
5. Message Durability
• RabbitMQ 서버가 종료되면 Queue와 메시지를 모두 잃게
됨
• Queue를 잃지 않으려면 Queue를 선언할 때 durable=true
로 설정
(이미 만들어진 동일한 이름의 Queue가 있으면 durable
값이 적용되지 않음)
• 메시지를 잃지 않으려면 Producer가 메시지를 젂송할 때
Persistent 메시지임을 표시
(MessageProperties.PERSISTENT_TEXT_PLAIN)
10. • RabbitMQ는 Unacked 메시지 수를 확인하지 않고 Queue
에 들어온 n번째 메시지를 n번째 Consumer에 맹목적으
로 젂달하기 때문에 바쁜 Consumer와 한가한 Consumer
가 생길 수 있음
• 이 때, prefetchCount=1로 basicQos를 설정하여 ack를
받기 젂에 새로운 메시지를 보내지 않도록 할 수 있음
(autoAck=true로 설정하면 의미 없음)
Fair Dispatch
15. Exchange Type
• Fanout: 모든 Queue에 브로드캐스팅
• Direct: Routing Key가 일치하는 Queue에 젂달
• Topic: Routing Key의 패턴을 비교
• Headers: Routing Key 대신 Message Header 속성을 비교
17. Routing Key 패턴
• 점(.)으로 구분된 여러 단어로 Routing Key를 만들 수
있음 (최대 255 바이트)
- stock.usd.nyse
- nyse.vmw
- quick.orange.rabbit
• 특수 기호
- * (star): 단 하나의 단어
- # (hash): 0개 이상의 단어
21. • 응답을 받기 위한 요청 메시지를 보낼 때에는
Callback Queue 주소를 함께 보내야 함
• 요청 메시지를 보낼 때 고유한 값으로 Correlation
Id를 설정하여 Callback Queue를 통해 응답 받은 메
시지가 어느 요청에 대한 응답인지 확인할 수 있음
RPC 호출 파라미터