Free Lines Arrow
본문 바로가기
Message Queue/RabbitMQ

[RbbitMQ] RabbitMQ 개념 기초

by skahn1215 2022. 9. 24.
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

 

RabbitMQ tutorial - "Hello world!" — RabbitMQ

Introduction Prerequisites This tutorial assumes RabbitMQ is installed and running on localhost on the standard port (5672). In case you use a different host, port or credentials, connections settings would require adjusting. Where to get help If you're ha

www.rabbitmq.com

 

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

댓글