2012-06-17 4 views
0

API 요청이 MassTransit/RabbitMQ를 통해 요청/응답 패턴을 사용하여 백엔드 서비스로 전달되는 API를 작성한 직후입니다. 우리는 현재이를 프로덕션 환경으로 추진하고 있으며 여러 가지 응용 프로그램 인스턴스 (API와 서비스 모두)가 서로 다른 서비스에서 실행되도록하고로드 밸런서가 요청을 분산 시키길 원합니다.MassTransit/RabbitMQ에서로드 균형 조정 응용 프로그램과 경쟁하는 소비자

이렇게하면 어떤 이유에서든 서버 중 하나를 풀에서 제거하면 잠재적으로 모든 메시지가 손실 될 수 있습니다. 나는 서버 사이에 RabbitMQ 클러스터를 만들려고하고 있는데 (각 서버는 로컬 설치가되어있다.)이 인스턴스에서 경쟁하는 소비자를 설정하는 방법에 대해 궁금해하고 있었다.

RabbitMQ 또는 MassTransit은 하나의 소비자 만 요청을 받거나 모든 소비자가 응답을 받도록 시도합니까? 또한 RabbitMQ 클러스터를 사용하면 MassTransit/RabbitMQ가 노드를 어떻게 처리합니까?

답변

2

이 문서를 살펴 보시기 바랍니다. http://www.rabbitmq.com/distributed.html

일반적인 분산 시나리오를 매우 잘 설명합니다. 귀하의 시나리오에서 나는 연합이 클러스터링보다 더 적합하다고 생각합니다. 클러스터링을 수행하는 경우 미러링 된 대기열을 확인해야합니다.

성능 향상이 필요한 경우 단일 서버로 메시지 대기열을 처리하는 것이 유리하며 다른 서버는 메시지 대기열에 연결하여 메시지를 생성/소비합니다.

Mass Transit의 작동 방식을 모르지만 요청/응답을 사용하는 경우 단일 소비자에게 메시지를 전달해야합니다. 메시지가 수신되지 않으면 (소비자가 충돌 함) 다른 소비자 그것을 집어 야합니다.