본문 바로가기

System/RabbitMQ

RabbitMQ의 기본적인 메시지 생성 및 사용

반응형

RabbitMQ는 메시지를 받아서 전달하는 메시지 브로커의 기능을 합니다.

메시지 브로커는 우체국과 같은 역할을 합니다.

메시지(편지)를 전달받아서 수신자에게 안전하게 전달하는 것을 목표로합니다.

RabbitMQ를 통해 발행된 메시지를 전달하고 받아서 소비하는 기본적인 과정입니다.


1. 기본 개념 이해

RabbitMQ의 기본 개념은 간단합니다.

메시지를 발행하는 프로듀서(Producer)와 소비하는 컨슈머(Consumer)가 존재합니다.

발행된 메시지는 큐(Queue)를 통해 전달되며 다음과 같이 표시할 수 있습니다.

큐는 이름을 가지는 우편함으로 RabbitMQ에 존재하는 구성 요소 중 하나입니다.

큐에 발행하고 큐에 있는 메시지를 가져와서 사용할 수 있습니다.


2. 메시지 생성하고 사용하기

메시지를 생성하는 프로듀서와 큐, 컨슈머는 모두 다른 장비에 위치할 수 있습니다.

RabbitMQ는 다양한 프로그래밍 언어에서 사용이 가능합니다.

파이썬에서는 pika 라이브러리를 사용해서 구현할 수 있습니다.

pip install pika

먼저 send.py라는 파일을 생성하고 다음과 같이 코드를 작성합니다.

import pika

parameters = pika.URLParameters('amqp://username:password@192.168.1.71:5672/%2F')
connection = pika.BlockingConnection(parameters)
channel = connection.channel()

channel.queue_declare(queue='hello')

channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()

RabbitMQ에 연결하기 위해 URL 형태로 연결 정보를 전달합니다.

queue_declare()로 hello라는 이름의 큐를 생성하고 메시지를 발행하는 간단한 코드입니다.

실행하면 RabbitMQ Management에서 다음과 같이 메시지가 있는 것을 확인할 수 있습니다.

다음으로 receive.py 파일을 생성하고 다음과 같이 코드를 작성합니다.

import pika

parameters = pika.URLParameters('amqp://username:password@192.168.1.71:5672/%2F')
connection = pika.BlockingConnection(parameters)
channel = connection.channel()

channel.queue_declare(queue='hello')

def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)

channel.basic_consume(callback, queue='hello', no_ack=True)

print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

연결 부분과 큐 선언은 메시지 발행 부분과 동일합니다.

메시지 컨슘을 위해서 콜백 함수를 등록하고 ack를 사용하지 않도록 설정했습니다.

실행하면 큐에 있던 메시지를 수신하고 내용을 출력하는 것을 확인할 수 있습니다.

메시지가 계속 발행되고 큐에 들어오면 자동으로 메시지를 출력하는 것을 확인할 수 있습니다.

이것으로 기본적으로 RabbitMQ의 메시지 사용이 가능합니다.

반응형

'System > RabbitMQ' 카테고리의 다른 글

RabbitMQ에 계정 및 가상호스트(Virtual Host) 추가  (0) 2017.02.01
Docker로 RabbitMQ 설치하기  (0) 2017.01.22