RabbitMQ Tuttorials 8

RabbitMQ Tutorials - RPC (8)

이번 목차는 RPC 에 대한 내용입니다. 해당 소단원을 간략히 설명하면 클라이언트는는 Request를 Server에 전달하고 Server는 해당 Request를 처리하여 알맞은 결과 값을 다시 클라이언트는에 Response 해주는 방법입니다. 즉, RPC는 원격지에 메시지를 전달해서 결과를 다시 전달 받는 역할을 한다. - Message Properties delivery_mode : 메시지 속성이 persistent, transtient를 표시해주는데 사용됩니다. contend_type : 인코딩의 MIME 유형을 설명하는데 사용됩니다. reply_to : 롤백 큐의 이름을 지정하는데 사용됩니다. correlation_id : RPC 응답을 요청과 상관시키는데 유용합니다. - RPC 동작방식 ㄱ. 클라..

RabbitMQ Tutorials - Topics (7)

이번 목차는 Topics 에 대한 내용입니다. 이전 소단원에서는 diret exchange를 이용하여 선택적으로 로그를 수신 할 수 있게 하였습니다. diret exchange을 사용하여 시스템을 개선 되었지만 여전히 한계가 있습니다. 여러 기준에 따라 routing을 수행 할 수 없습니다. 해당 소단원에서는 심각도와 기능을 기반으로 로그를 라우팅하는 unix의 svslog 처럼 사용하기 위해 topic을 사용 할 예정입니다. - Topic exchange Topic exchange로 전송된 메시지는 임의의 라우팅 키를 가질 수 없습니다. 점(.) 으로 구분된 단어 목록이어야 합니다. 단어는 무엇이든 될 수 있지만 일반적으로 메시지와 연결된 일부 기능을 지정합니다. 바인딩 키도 같은 형식이어야 합니다. ..

RabbitMQ Tutorials - Routing (6)

이번 목차는 Routing 에 대한 내용입니다. 이전 소단원에서는 pub/sub를 이용하여 단순한 메시지를 모든 수신자에게 전달 하였습니다. 해당 소단원에서는 Routing 기능을 통해 특정 수신자에게 특정 메시지를 보내는 테스트를 할 예정 입니다. 예를 들어, 앞선 예저의 로깅 시스템에서 Disk Logging 프로그램은 Disk의 용량 절약을 목적으로 Critical한 메세지만 수신하여 파일로 떨구고 싶은 경우에 Routing 기능을 사용 할 수 있습니다. - Bindings 이전 소단원에서 아래와 같은 바인드 코드를 사용했습니다. channel.queue_bind(exchange=exchange_name, queue=queue_name) 바인딩은 매개 변수로 route_key를 사용 할 수 있습니다..

RabbitMQ Tutorials - Publish/Subscribe (5)

이번 목차는 Publish/Subscribe 에 대한 내용입니다. 이전 소단원에서는 작업 대기열을 만든 후 한개의 Task가 한개의 worker에게 메시지를 전달 하였습니다. 해당 소단원에서는 한개의 Task가 여러 woker에게 메시지를 전달하는 테스트를 진행 할 예정입니다. 이 패턴을 "publish/subscribe" 라고 합니다. Pub / Sub 패턴을 설명하기 위해 간단한 로깅 시스템을 구축 할 예정입니다. 두개의 프로그램으로 구성되며, 첫 번쨰 프로그램은 로그 메시지를 보내고 두번째 프로그램은 이를 수신하여 인쇄합니다. 로깅 시스템에서 수신기 프로그램의 모든 실행 복사본은 메시지를 받습니다. 그렇게 하면 하나의 수신기를 실행하고 로그를 디스크로 보낼 수 있습니다. 동시에 다른 수신기를 실행하..

RabbitMQ Tutorials - Work queues (4)

이번 목차는 work queus에 대한 내용입니다. 시간을 많이 걸리는 작업을 여러 작업자에게 분산하는데 사용 할 작업 대기열을 만들고 테스트 하는 내용입니다. 작업 대기열의 기본 아이디는 리소스 집약적인 작업을 즉시 수행하고 완료될 때까지 기다려야 하는 것을 방지하는 것입니다. 대신 나중에 수행 할 작업을 예약합니다. 1.2.2.1. Python - Python 소스 코드 작성 new_task.py #!/usr/bin/env python import pika import sys connection = pika.BlockingConnection( pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.queue..

RabbitMQ Tutorials - Hello Wolrd (3)

이번 목차는 메시지 큐를 단순하게 보내고 받을 수 있는 내용입니다. 사용 가능한 언어로는 Python, Java Ruby, PHP, C#, JavaScript, Go, Elixir, Objective-C, Swift, Spring AMQP 가 있지만, Python 으로 진행 할 예정입니다. 1.2.1.1. Python - Python 소스 코드 작성 Send.py #!/usr/bin/env python import pika # RabbitMQ Server 연결 # 다른 시스템에 연결 하려면 localhost 부분에 IP 주소 입력 connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection...

RabbitMQ Tutorials - Python 환경구성 (2)

이번 목차는 Python을 이용하여 RabbitMQ를 테스트 하기 전 환경 구성에 대한 내용입니다. - Python3 설치 및 버전 확인 mwno@master:~# sudo apt-get install python3 Reading package lists... Done Building dependency tree Reading state information... Done python3 is already the newest version (3.8.2-0ubuntu2). python3 set to manually installed. 0 upgraded, 0 newly installed, 0 to remove and 98 not upgraded. root@master:~# root@master:~# pyt..

RabbitMQ Tutorials - Downloading and install RabbitMQ (1)

RabbitMQ는 AMQP(Advandced Message Queuing Protocol) 프로토콜을 구현한 오픈 소스 메시지 브로커로, 메시징큐 기능을 수행하는 오픈 소스입니다. 이번 목차는 RabbitMQ Touorials을 하기 전 환경 구성을 하기 위한 내용입니다. ​ 2022년 3월 18일 기준으로 RabbitMQ의 최신 릴리스는 3.9.13 입니다. 다음으로 진행 할 내용은 Docker 이미지를 통해 RabbitMQ을 사용 합니다. 환경 구성이 끝난 후 VM이 깨질 수 있으니 스냅샷을 찍는걸 추천 드립니다. # for RabbitMQ 3.9, the latest series mwno@master:~# sudo docker run -it --rm --name rabbitmq -p 5672:567..