바보같이 pip install pika만 하고 rabbitMQ 자체를 설치하지 않았다...ㅎㅎ

윈도우 기준으로 choco를 설치하고 난 뒤에 아래 코드를 powershell에서 입력하면된다.
(혹은 이 링크로 직접설치도 가능하다 나는 choco가 편했다)
choco install rabbitmq
맥은 choco 대신 brew를 사용하면 되고 리눅스의 경우 아래 포스트를 참고하면 되겠다.
설치 이후 래빗 튜토리얼을 따라 가며 필요한 기능을 습득하였고 코드로 간단히 설명하겠다.
혹 코드를 직접 작성하며 공부할 분들은 아래 링크로 가면 되겠다.
https://www.rabbitmq.com/tutorials
RabbitMQ Tutorials | RabbitMQ
<!--
www.rabbitmq.com
broker코드
import pika, sys
connection = pika.BlockingConnection(
pika.ConnectionParameters('localhost'))
channel = connection.channel()
#혹 서버가 다운되더라도 메세지 save하는 방법 durable=True
#이름 안정하면 서버에서 자체적으로 지정할 수 있으나 exchange를 선언해야함(ex: amq.gen-JzTY20BRgKO-HjmUJj0wLg).
channel.queue_declare(queue='task_hello', durable=True)
message = ' '.join(sys.argv[1:]) or 'Hello World!'
#exchange, que이름, 메세지, 메세지save(영속성부여).
channel.basic_publish(
exchange='',
routing_key='hello',
body=message,
properties=pika.BasicProperties(
delivery_mode=pika.DeliveryMode.Persistent
))
print(f" [x] Sent {message}")
connection.close()
consumer코드
import pika, sys, os,time
def main():
def callback(ch, method, properties, body):
print(f" [x] Received {body.decode()}")
time.sleep(body.count(b'.'))
print(" [x] Done")
ch.basic_ack(delivery_tag=method.delivery_tag)
connection = pika.BlockingConnection(
pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='task_hello', durable=True)
print(" [*] Waiting for messages. To exit press CTRL+C")
# 한 방에 몇개의 task 할지
channel.basic_qos(prefetch_count=1)
# channel.basic_consume(queue='hello', auto_ack=True, on_message_callback=callback) 자동 ACK방법
channel.basic_consume(queue='hello', on_message_callback=callback)
channel.start_consuming()
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
print("Shutting down")
try:
sys.exit(0)
except SystemExit:
os._exit(0)
실행 결과 잘 돌아가는 것을 확인할 수 있다.

'일상+자잘한 일' 카테고리의 다른 글
[RabbitMQ] 설치부터 튜토리얼까지 for Linux (0) | 2024.06.23 |
---|---|
[Choco] Windows용 chocolatey 설치 (0) | 2024.06.20 |
2024 상반기 회고록 + 취준 이야기 (0) | 2024.04.12 |
[pypy/python] 같은 코드상에서 pypy가 python보다 메모리를 많이 먹는 이유 (0) | 2024.01.30 |
[Git] error:does not have a commit checked out (0) | 2023.12.20 |