exchange: 4개의 글
Exchange의 "direct" type을 이용하여, 특정 routing_key를 binding Queue에게 Publisher가 데이터를 보내고, Consumer가 데이터를 수신하는 방법을 설명 한다. 아래 그림의 경우, Publisher가 Excahnge에게 "info" routing_key로 메시지를 보내면, Consumer2가 데이터를 수신 하고, "error" routing_key로 메시지를 보내면 Consumer1 & Consumer2가 데이터를 수신 한다. 즉 아래 방식을 사용하면, Publisher는 원하는 Queue에게만 메시지를 보낼 수 있고, Consumer는 원하는 Queue의 메시지만 수신 할 수 있다. receive_logs.direct.py import pika import ..
AMQP(Advanced Message Queuing Protocol) AMQP는 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜이다. AMQP 이전 상용화된 MQ(Message Queueing)은 플랫폼 종속적인 제품들이 많아, 서로 다른 이기 존 간에 메시지를 교환하기 위해서는 메시지 포맷 변경을 위한 메시지 브릿지 이용 및 시스템 자체를 통일 시켜야 하는 불편함 존재 메시지 브릿지를 이용함으로써 속도 저하 발생 이를 해결하기 위해 AMQP 등장하였으며, 서로 다른 시스템간에 최대한 효율적인 방법으로 메시지를 교환하기 위한 MQ 프로토콜로 설계 시스템과 벤더에 종속 되는 것을 방지 하기 위해 AMQP는 아래와 같은 조건을 충족 해야 함 모든 Broker들은 똑같은 방식으로 동작 할 것 모..
이번 글에서는 RabbitMQ의 메세지 broker인 Exchange에 대해 알아보겠습니다. 0. Exchange란? 메세지의 Routing Key에 따라 메세지를 적절한 Queue에 분배하는 broker 역할을 수행하는 Distributer 입니다. Exchange의 종류에는 Fanout / Direct / Topic 등이 있습니다. 1. Fanout Exchange Fanout Exchange는 binding된 모든 Queue에 하나의 메시지를 복제해 내보냅니다. 만약 아래의 그림처럼, HR 시스템이 "x.hr" Exchange로 신규 입사자 정보를 Publish 하면 Fanout Exchange는 해당 메세지를 복제해 "q.hr.accounting"과 "q.hr.marketing"으로 전달합니다. ..
오늘 포스팅할 내용은 래빗엠큐이다. 그 동안에는 카프카를 사용할 일이 많아 카프카에 대한 포스팅이 주였는데, 이번에 래빗엠큐를 사용할 일이 생겨 간단히 래빗엠큐에 대해 간단히 다루어 볼것이다.(예제 코드는 위 깃헙에 올려놓았습니다.) 비동기 작업에 있어 큐를 사용하려면 중간에 메시지 브로커라는 개념이 존재하는데, 이러한 메시지 브로커에는 RabbitMQ, Kafka 등이 대표적으로 있다. 해당 포스트에서는 표준 MQ프로토콜인 AMQP를 구현한 RabbitMQ(래빗엠큐)에 대해 다루어볼 것이다. 간단하게 메시지큐는 아래 그림과 같은 워크 플로우로 이루어져있다. 대부분의 메시지큐는 프로듀서가 있고, 해당 프로듀서가 브로커로 메시지를 발행하면, 적절한 컨슈머가 해당 메시지를 구독(읽다)하는 구조이다. 그렇다면..