본문 바로가기
728x90

파이썬으로 배우는 RabbitMQ4

[RMQ] Python으로 배우는 RabbitMQ 튜토리얼(5) - Topic 1. Topic이란 RabbitMQ에서 토픽이란 routing_key 전체가 일치하거나 일부 패턴과 일치하는 모든 Queue에 메세지를 전달하는 역할을 한다. 위와 같이 어떤 토픽이냐에 따라 해당 토픽에 관심이 있는 Consumer에게 메세지를 선별적으로 보내게 된다. 이때 토픽에서 와일드 카드 기능을 제공하게 되는데, 1. *(star) : 한 단어만을 지정 가능 2. #(hash) : 한 단어 이상을 지정 가능 예를 들어, *.orange.* 의 경우 a.orange.b 형식으로 매칭되고, a.b.orange의 경우에는 매칭되지 않는다. 또한 lazy.#의 경우, lazy.aa.bb 혹은 lazy.cc.dd 혹은 lazy.abcd.efghi 모두와 매칭 된다. 토픽의 장점은 임의의 라우팅 키를 가질 .. 2022. 1. 20.
[RMQ] Python으로 배우는 RabbitMQ 튜토리얼(4) - Routing Routing의 경우 Pub/Sub 구조와 함께 사용하는 기능으로, 기존 튜토리얼(3)에서 Pub/Sub의 경우에는 단순히 메세지를 모든 Subscriber에게 전송했다면, Routing 기능을 통해 특정 Subscriber에게 특정 메세지를 보내는 역할을 한다. 예를 들어, 앞선 예제의 로깅 시스템에서 Disk Logging 프로그램은 Disk의 용량 절약을 목적으로 Critical한 에러 메세지만 수신하여 파일로 떨구고 싶은 경우에 Routing 기능을 사용할 수 있다. 1. Binding 이때 사용하는 옵션이 routing_key 옵션으로 바인딩 키를 설정한다. channel.queue_bind(exchange=exchange_name, queue=queue_name, routing_key='bla.. 2022. 1. 18.
[RMQ] Python으로 배우는 RabbitMQ 튜토리얼(3) - Publish/Subscribe 이전과 동일하게 Pika Python Client를 사용한다. 이전 글(Python으로 배우는 RabbitMQ 튜토리얼(2) - Work Queue)에서는 작업 대기열(Work Queue)를 실습했다. Work Queue의 경우에는 정확히 한 작업자(Worker)에게 메세지를 전달하는 것이었다면 이번 글에서 배울 Publish/Subscribe의 경우에는 특정 토픽을 구독하는 여러 Consumer에게 메세지를 전달하는 방식이다. 여기에 동작 방식을 잘 설명하기 위해 간단한 로깅 시스템을 추가로 구축할 예정이다. 아래의 예시는 하나의 프로그램에서 Log 메세지를 전송하면, Disk에 Log를 기록하는 프로그램과 화면에 Log를 출력하는 프로그램이 각각 메세지를 수신한다. 1. 교환(Exchanges) 이전.. 2022. 1. 12.
[RMQ] Python으로 배우는 RabbitMQ 튜토리얼(2) - Work Queue - Pika Python Client 사용 - 필수조건 : pika RabbitMQ Client 버전 1.0.0. - RabbitMQ 5672 port process running 첫번째 실습에서 명명된 큐에 메세지를 보내고 받는 프로그램을 만들었다면, 이번 글에서는 시간이 오래 걸리는 작업에 사용하거나 여러 작업자에게 분산하는데 사용할 작업 대기열(Work Queue)에 대해서 배워보려고 한다. (시간이 걸리는 작업을 구현하기 위해 time.sleep()함수를 사용하여 처리할 예정이다.) 작업대기열(Work Queue)의 장점은 작업을 병렬로 처리할 수 있다는 점이다. 먼저 두 개의 worker.py 스크립트를 실행하여 메세지를 처리할 Consumer(worker)를 2개 생성한다. 튜토리얼(1)의 p.. 2022. 1. 12.
728x90