728x90
반응형
What is RabbitMQ ?
- 래빗엠큐는 하나의 메세지 브로커이다.
- 메세지를 publish 하고 consume 할 수 있는 기능을 제공한다.
래빗 엠큐 쉽게 이해하기
- 래빗 엠큐는 우편함이라고 생각하면 편하다.
- 발신자가 편지를 넣으면 우체부가 우편함에 꺼내서 수신자에게 준다.
- 래빗엠큐가 우편함 역할을 하고 있다.
- 우편함과 다른점은 편지 뿐만 아니라 여러가지 데이터를 처리 할 수 있다는 것이다
Producing, Consuming, Queue
P: Producing
- 프로듀싱은 단순히 메세지를 보내는것을 의미한다.
- 메세지를 보내는 쪽이 Producer 이다.
Queue
- 레빗엠큐에 있는 우편함이라고 생각하면 편하다.
- 메세지 버퍼의 역할을 한다.
- 메세지를 보내면 메세지 큐에 저장이 된다.
- 그렇기 때문에 호스트의 메모리와 디스크에 제한이 된다.
- Producer 는 메세지를 여러개 생성 할 수 있고 그 메세지들을 큐에 넣는다.
C: Consuming
- 컨슈밍은 수신하는것을 의미한다.
- 메세지를 받는 쪽이 Consumer 이다.
- 큐에 들어간 메세지를 읽어온다.
Sending
- 메세지 큐가 존재하는지 먼저 확인한다
- 메세지 큐가 없다면 메세지를 드랍 시킨다. - 메세지는 바로 큐로 들어 가지 않는다
- exchange 를 통해야 한다. - 아래는 메세지를 발송하는 예제 코드다.
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print(" [x] Sent 'Hello World!'")
Exchange 의 역할
- 위에서 메세지가 바로 들어가지 않는다고 했다
- exhange 를 통해 메세지가 queue로 들어가게된다.
- 대기열 이름은 routing key 에 지정한다
이점
- exchange 를 쓰게 된다면 정확하게 어떤 큐로 넣을지 명확하게 할 수 있다.
Receiving
- 메세지 큐가 있는지 확인을 한다.
- 메세지 큐를 선언한다.
- 메세지큐를 또선언 하는 이유는 다음과 같다.
- 메세지 큐가 있다면 안만들면 되지만 메세지큐가 없다면 동작인 안되기 때문이다.
- 코드를 실행할때 Receiver 가 먼저 실행될지 Consumer 가 먼저 실행되지 모르기 때문이다.
channel.queue_declare(queue='hello')
메세지 큐가 어떻게 동작 하는지 알아봤다
좀더 자세한 내용은 아래 링크를 참조하면 된다.
참고:
https://www.rabbitmq.com/tutorials/tutorial-one-python.html
728x90
반응형
'Message Queue > RabbitMQ' 카테고리의 다른 글
[RbbitMQ] Delay RabbitMQ Spring Consume (0) | 2022.10.17 |
---|---|
[RabbitMQ] Work Queues (0) | 2022.10.03 |
[RbbitMQ] Delay RabbitMQ Spring Publish (0) | 2022.09.24 |
[RbbitMQ] Delay RabbitMQ 설치하기 (0) | 2022.09.24 |
댓글