본문 바로가기

리눅스

파이션 코드를 사용한 RabbitMQ 메시지 큐의 간단한 테스트

728x90

파이션 코드를 사용한 RabbitMQ 메시지 큐의 간단한 테스트

RabbitMQ의 Consumer와 Publisher는 메시지 큐를 통해 데이터를 송수신하는 역할을 담당합니다.

  • Consumer (소비자): RabbitMQ 큐에서 메시지를 수신하여 처리하는 역할을 담당합니다. Consumer는 큐에 연결되어 메시지를 받아들이고, 해당 메시지를 소비하여 필요한 로직을 수행합니다. Consumer는 메시지를 소비하면서 큐에서 메시지를 제거합니다.
  • Publisher (발행자): RabbitMQ 큐로 메시지를 발행하는 역할을 담당합니다. Publisher는 큐에 연결하여 메시지를 발행하고, 해당 메시지를 큐에 전달합니다. 메시지는 큐에 저장되어 대기하며, Consumer가 이를 소비하여 처리합니다.

Consumer와 Publisher는 RabbitMQ 메시징 시스템의 핵심 구성 요소입니다. Consumer는 큐에 도착한 메시지를 읽어들여 실제 작업을 수행하고, Publisher는 메시지를 생성하여 큐에 보냅니다. 이를 통해 애플리케이션 간의 비동기 통신과 작업 로드 밸런싱을 구현할 수 있습니다.

 

Consumer와 Publisher는 RabbitMQ와 통신하기 위해 AMQP (Advanced Message Queuing Protocol)를 사용합니다. AMQP는 메시지 큐 시스템 간에 표준화된 프로토콜로, 메시지의 송수신을 안전하고 신뢰성 있게 처리할 수 있도록 지원합니다.

 

Consumer와 Publisher는 RabbitMQ의 주요 개념 중 하나이며, 메시지 큐 기반 애플리케이션을 구축하는 데 중요한 역할을 담당합니다.


파이션 코드를 사용하여 테스트 진행

출처-https://www.rabbitmq.com/img/tutorials/intro/hello-world-example-routing.png

 

pip 명령어가 없는 경우 아래와 같이 python3-pip 패키지를 설치합니다.

apt install -y python3-pip

pika 라이브러리 설치

pip install pika

Consumer 코드

vim consumer.py
import pika

def callback(ch, method, properties, body):
    # 메시지 처리 로직을 작성합니다.
    print("Received message:", body.decode())

# RabbitMQ 서버에 연결합니다.
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

# 큐를 생성합니다.
channel.queue_declare(queue='my_queue')

# 큐에서 메시지를 소비하는 콜백 함수를 등록합니다.
channel.basic_consume(queue='my_queue', on_message_callback=callback, auto_ack=True)

# 메시지를 계속해서 소비합니다.
print('Waiting for messages...')
channel.start_consuming()
728x90

 

publisher 코드

vim publisher.py
import pika

# RabbitMQ 서버에 연결합니다.
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

# 큐를 생성합니다.
channel.queue_declare(queue='my_queue')

# 메시지를 전송합니다.
message = 'Hello, RabbitMQ!'
channel.basic_publish(exchange='', routing_key='my_queue', body=message)

print("Message sent:", message)

# 연결을 닫습니다.
connection.close()

consumer 코드 실행

$ python3 consumer.py
Waiting for messages...

 

 

 

$ python3 consumer.py
Waiting for messages...
Received message: Hello, RabbitMQ!
Received message: Hello, RabbitMQ!

 

publisher 코드 실행

$ python3 publisher.py 
Message sent: Hello, RabbitMQ!

 

위 예시 코드에서 localhost 부분은 RabbitMQ 서버의 호스트 주소로 변경해야 합니다. 또한 큐 이름은 사용자가 원하는 이름으로 변경할 수 있습니다. Consumer는 basic_consume 함수를 호출하여 메시지를 받아들이고, Publisher는 basic_publish 함수를 호출하여 메시지를 전송합니다.

 

이 코드를 실행하기 위해서는 pika 라이브러리가 설치되어 있어야 합니다. 필요한 경우, pip install pika 명령을 사용하여 라이브러리를 설치할 수 있습니다.

 

위 코드는 RabbitMQ 메시지 큐의 간단한 예시입니다. 실제 애플리케이션에 맞게 메시지 처리 로직을 작성하고, 오류 처리 및 예외 처리 등을 추가해야 합니다.

 

728x90