2010-08-05 5 views
10

RabbitMQ는 기본적으로 클러스터링을 지원하지만 큐는 복제되지 않으며 큐가 생성 된 노드에 바인딩됩니다. 지금은 DRBD 솔루션 이외에 RabbitMQ의 가용성을 높이기 위해 리소스를 낭비하는 것처럼 보이므로 활성 서버가 다운 될 때까지 기다리지 않고 전체 서버를 예약하는 방법이 있기 때문에 RabbitMQ를 사용할 수있는 방법을 찾고 있습니다.RabbitMQ 대기열을 장애 조치하는 방법은 무엇입니까?

두 대기열이있는 설정에 대해 생각하고 있습니다. 메시지가 게시 될 때 RabbitMQ 클러스터가 두 큐 중 하나에 메시지를 보내는 것이 좋습니다. 게시자가 다운 된 대기열에 게시하려고 시도하고 게시자가 다른 대기열을 사용하여 다시 시도 할 수있는 경우 게시자에게 오류가 발생하지만 클러스터 수준에서이 작업을 자동으로 수행 할 수 있는지 궁금해합니다. 클라이언트 코드를 작성하여 처리해야합니다. 이 작업을 수행 할 수 있습니까?

답변

5

Alternate Exchanges을 살펴보십시오.

기본적으로 요청한 내용이지만 대기열 대신 교환이 가능합니다. RabbitMQ 클라이언트 중 하나를 사용하여 대체 교환기를 지정하여 교환기에 게시하는 것이 좋습니다. 메시지를 첫 번째 메시지로 전달할 수 있으면 메시지가 전달됩니다. 그렇지 않은 경우 (도달 할 수 없거나 바인드 된 대기열이 없기 때.에) 대체가 사용됩니다.

11

최근 RabbitMQ에 활성/활성 네이티브 지원이 추가되었습니다. http://www.rabbitmq.com/ha.html

+0

대체 교환은 어떻게하면 좋을까요? – guiomie

+0

@guiomie, 대체 교환에서 마스터 노드가 다운되면 모든 메시지가 사라집니다. 액티브/액티브 구성은 모든 메시지를 스페어 서버에 보낼 때 스페어 서버에 복사합니다. –

4

고 가용성 "미러링 된"대기열은 토끼 HA의 황금 표준입니다.

관련 문제