2012-01-11 2 views
4

Apache ActiveMQ 5.5를 사용하고 있습니다. tcp : //0.0.0.0 : 61616에서 실행중인 브로커 (Main Broker라고 부름)가 있습니다. 이 브로커는 저장소를 만들고 원격 브로커에 메시지를 전달합니다. 이를 위해이 브로커에서 두 개의 원격 브로커로 네트워크를 연결합니다. 우리는 원격 중개자 중 하나가 장애 조치로 기본 및 기타 역할을하도록합니다. 이것은 네트워크 우리는 모든 브로커가 실행 때 메시지의 일반적인 시나리오에서성공적인 페일 오버 후 기본 원격 브로커로 전환

failover://(tcp://<b>server1</b>:61617,tcp://<b>server2</b>:61617)?randomize=false 

을 듣고 스프링 DefaultMessageListenerContainer을 사용하는 우리가

static:(failover://(tcp://<b>server1</b>:61617,tcp://<b>server2</b>:61617)?randomize=false) 

를 사용하는 URI를 연결하고 메시지입니다 Main Broker로 전송되면 server1로 전달되고 수신 대기자가 사용합니다.

server1에서 브로커를 중지하면 장애 극복이 성공적으로 완료되고 메시지가 server2로 전달되어 수신기에서 성공적으로 소비됩니다. 문제는 server1을 다시 가동 시키면 메시지가 main 브로커에 의해 server2로 계속 전달된다는 것입니다. 우리의 요구 사항은 server1이 시작되어 실행되면 Main 브로커는 server1에 메시지 전달을 시작해야하며 리스너는 server1에 다시 연결하여 메시지를 사용해야합니다. 한 번에 servers1 또는 server2 중 하나만 활성화되기를 원하기 때문에 randomize를 true로 변경할 수 없습니다.

가능한지와 방법을 알려주세요.

답변

4

"priorityBackup"옵션을 true로 설정해야합니다. URI는 다음과 같습니다.

static:(failover://(tcp://server1:61617,tcp://server2:61617)?randomize=false&priorityBackup=true) 

이렇게하면 server1 (서버 목록의 첫 번째)이 우선 백업됩니다. server1이 다운되면 server2로 failover하지만 server1에 다시 연결을 시도합니다. 따라서 다시 백업되면 server1로 다시 전환됩니다. 5.6

전체 자세한 내용은 여기이 옵션은 버전에서만 사용할 수 있습니다 http://bsnyderblog.blogspot.com/2010/10/new-features-in-activemq-54-automatic.html

: 도 여기에 흥미로운 블로그가 http://activemq.apache.org/failover-transport-reference.html

관련 문제