2012-05-30 3 views
1

Java가 activemq에서 페일 오버 프로토콜을 지원할 수있는 이유는 다른 반면 다른 언어는 지원할 수없는 이유입니다. 나의 의심은 failover://(tcp://host1:61616,tcp://host2:61616)?randomize=false 같은 장애 조치 프로토콜에서도 클라이언트가 tcp://host1:61616과 같은 내부 URL 중 하나를 사용하고 다음 호출이 일부 장애 조치 프로토콜을 사용하고 있는지 여부를 알기 위해 브로커가 어떻게 왔는지 그리고 브로커가 그 방법을 결정하는 방법입니다. 메시지를 복제해야합니까?Apache ActiveMQ 페일 오버 프로토콜

답변

2

failover 프로토콜은 클라이언트 측에서만 다시 연결 논리를위한 것이며 클라이언트가 failover 프로토콜을 사용하는지 여부도 알지 못합니다. official AMQ documentation 가입일

:

장애 조치 수송층은 다른 전송 중 위에 로직 재.

장애 조치 구성 구문을 사용하면 합성 uri를 원하는 수만큼 지정할 수 있습니다. 장애 조치 전송은 복합 URI 중 하나를 임의로 선택하고 이에 대한 연결을 설정하려고 시도합니다. 이 성공하지 못하거나 나중에 실패하면 새 연결이 이고 목록의 다른 하나의 연결로 설정됩니다. 여기 복제가 아니라 공식 문서 기본적으로

장애 조치 수송 트랙 트랜잭션을 따라 무엇을 의미하는지

확실하지. 기내의 트랜잭션은 재 연결시 재생됩니다.

+0

예, 실험 설정에 의해 동일하게 파악되었습니다. 빠른 답변 감사합니다 :) –

1

ActiveMQ와 함께 HA 솔루션을 설치하는 시나리오는 여러 가지가 있습니다.

클라이언트가 장애 조치 프로토콜을 사용하여 host1, host2에 연결하는 경우 브로커 설정도 HA에 대해 설정해야합니다.

한 가지 해결 방법은 액티브 - 액티브 솔루션에서 host1과 host2를 클러스터링하는 것입니다. 메시지는 요청할 때 항상 전달됩니다. 대기열은 모든 amq 브로커간에 전체 클러스터에서 공유됩니다.

그렇지 않은 경우 액티브 - 액티브 솔루션이 바람직하지 않은 경우 두 개의 브로커 host1과 host2가 데이터 영역을 공유하는 마스터 - 슬레이브 솔루션을 설정할 수 있습니다 (예 : 지속성을위한 데이터베이스 또는 공유 SAN 사용) 디스크).

설정의 조합이 더 많지만 장애 조치 프로토콜은 다운되면 다른 브로커에 도착하는 메시지를 전체 솔루션이 처리 할 수 ​​있다고 가정합니다. 내가 아는 한, 브로커의 관점에서 페일 오버 프로토콜에는 다른 마술이 없습니다.

관련 문제