- RabbitMQ란
- AMQP (Advanced Message Queueing Protocol) message broker software open source
- AMQP -> 표준MQ 프로토콜
- RabbitMQ Work Flow
- 메세지는 Message Queue를 통해 원하는 사용자에게 전달할 수 있음
- Message Broker는 Producer와 Consumer 사이 중간자 역할을 담당
- Message는 Queue에 저장되어 소비자가 조회할때까지 저장
- RabbitMQ 사용
- Message Queue는 빠른 응답을 원할 때 주로 사용
- 많은 Resource가 필요한 작업은 Event를 발생시켜 다른 API에게 위임함
- 다른 API에게 위임함으로써 Request에 대해 빠르게 응답 가능
- Message를 많은 사람들에게 전달하고 싶을때 주로 사용
- 두 Application간의 결합도는 Message Queue를 통해 낮출 수 있는 장점이 있음
- Exchanges
- 다른 Queue에게 Routing하는 역할을 담당
- Message는 바로 Queue로 Publishing 하지 않음
- Producer는 Exchange에게 Message를 보냄
- Types of Exchange
Message의 Routing Key와 정확히 일치하는 Binding된 Queue로 Routing
Binding된 모든 Queue에 Message를 Routing
특정 Routing Pattern이 일치하는 Queue로 Routing
key-value로 정의된 Header 속성을 통한 Routing
- Exchange 기타 설정값
브로커가 재시작 될 때 남아 있는지 여부
durable -> 재시작해도 유지가능
transient -> 재시작하면 사라집니다.
마지막 Queue 연결이 해제되면 삭제
- Message Flow
- Producer는 Message를 Exchange에게 보내게 됩니다.
Exchange를 생성할때 Exchange의 Type을 정해야 합니다.
- Exchange는 Routing Key를 사용하여 적절한 Queue로 Routing을 진행합니다.
Routing은 Exchange Type에 따라 전략이 바뀌게 됩니다.
- Exchange - Queue와 Binding이 완료된 모습을 볼 수 있습니다.
Message 속성에 따라 적절한 Queue로 Routing이 됩니다.
- Message는 Consumer가 소비할때까지 Queue에 대기하게 됩니다.
- Consumer는 Message를 소비하게 됩니다.
- RabbitMQ 용어
Virtual Host를 통해서 하나의 RabbitMQ 인스턴스 안에 사용하고 있는 Application을 분리할 수 있음
물리적인 TCP Connection, HTTPS -> TLS(SSL) Connection을 사용
하나의 물리적인 Connection 내에 생성되는 가상의 Connection
Consumer의 process나 thread는 각자 Channel을 통해 Queue에 연결 될 수 있음