RabbitMQ
[MQ] RabbitMQ 미러링(Mirroring)
이 글을 이해하기 위해서는 RabbitMQ 클러스터링에 대한 이해가 먼저 필요합니다. 혹시 아직 RabbitMQ 클러스터링에 대해 잘 모르신다면 여기를 먼저 보고와주세요! RabbitMQ 클러스터의 한계 RabbitMQ 클러스터는 "Queue를 제외"한 모든 정보를 모든 노드가 공유한다고 했던것을 기억하시나요? 따라서 결국 모든 클러스터에는 하나의 Unique한 Queue만 존재합니다. 따라서 만약 하나의 노드가 Fail 하는 경우, 다른 노드와 connection을 맺어서 클러스터와의 연결을 유지할 수는 있지만 해당 노드에 속해있던 Queue에 저장된 Message는 유실이 됩니다. 따라서 이같은 Message 유실을 최소화하기 위해 나온 기법이 바로 Queue Mirroring 입니다. Queue 미..
[MQ] RabbitMQ 클러스터링(Clustering)
혹시 RabbitMQ에 대한 이해가 필요하시다면 여기를 먼저 보고와주세요! RabbitMQ 클러스터링이란? 다수의 RabbitMQ 노드(RabbitMQ가 설치된 서버)를 마치 하나의 RabbitMQ를 사용하는 것처럼 사용할 수 있는 기법입니다. 위 그림처럼 클러스터에 노드가 3개 존재한다면 어떤 노드에 연결해도 나머지 두 개 노드의 RabbitMQ에 접근할 수 있습니다. 어떻게 그게 가능한가요? 클러스터에 구성된 RabbitMQ들은 Queue를 제외한 모든 정보와 상태값이 공유됩니다*. 예시로 Exchange 같은 경우 클러스터내에 있는 모든 RabbitMQ에 동일하게 존재합니다. 따라서 하나의 노드에만 connection이 맺어져있어도 노드가 queue를 보유하고있는지 상관없이 원하는 Exchange를..
[MQ] RabbitMQ 란?
RabbitMQ는 쉽고 간편하면서 AMQP를 구현한 오픈소스 메시지 브로커(Message Broker) 입니다. 메시지 브로커(Message Broker)란? 메시지 브로커는 sender application이 발송한 메시지를 receiver application에게 전달해주는 툴입니다. 메시지 브로커는 메시지를 전달하면 메시지를 보관하지 않고 삭제합니다. AMQP(Advanced Message Queuing Protocol)란? 메시지 지향 미들웨어를 위한 표준 응용 계층 프로토콜입니다. 탄생 배경은 AMQP이전에 상용화된 MQ는 플랫폼에 종속적인 경우가 많았었기 때문에 다른 이기종간에 메시지를 교환하기 위해서는 메시지 브릿지를 사용하거나 (성능 저하 이슈), 시스템 자체를 통일 시켜야하는 (대공사) ..