2014-12-09 6 views
0

대기열을 수신 대기하는 메시지 수신기가 있습니다. 메시지 브로커가 중지되거나 종료되면 응용 프로그램이 갑자기 종료됩니다. 대기열을 수신하기 전에 JMS 브로커 연결을 확인하는 방법이 있습니까? 리스너 코드는 JMS 브로커가 작동중인 경우에만 사용 가능해야합니다. 우리는 당신이있는 경우에만 성공의 ActiveMQ와 때마다 당신에게 설치 연결로 당신이 당신의 연결이 활성화 될 테스트 할 수 없습니다Jms 브로커 연결 - 대기열을 청취하기 전에 연결을 테스트하십시오. - java

org.springframework.context.ApplicationContextException: Failed to start bean 'xx'; nested exception is org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is javax.jms.JMSException: Could not connect to broker URL: tcp://xx:61616. Reason: java.net.ConnectException: Connection refused: connect 
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176) 
    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51) 
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346) 
    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149) 
    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112) 
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:773) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:142) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:485) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:120) 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:952) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:941) 
+0

아니요. 대기열을 들으면 연결이 테스트됩니다. 다시 듣기 전에 다시 테스트하는 것은 쓸모 없습니다. – EJP

답변

0

(아래 JMS 브로커와) 대기열을들을 때 우리는 아래의 예외를 얻고있다 activemq 서버가 실행 중입니다.

'연결 예외'를 처리하고 예외가 발생하지 않을 때까지 특정 간격 후에 다시 연결을 시도하면 Java 코드에서이를 수행하는 것이 좋습니다. 이것은 연결을 시도하기 전에 ActiveMQ가 다운 된 경우에 도움이됩니다 그것으로.

호프가 도움이 되었으면 좋겠다. 행운을 빌어 요!

0

사용 고객의 failover transport는 :

연결이 가능하며, 다음 연결을 설정하고 클라이언트를 할 때까지, 장애 조치 전송 재 시도를 계속합니다 (내부 TCP 전송을 통해) 사용할 수 없습니다 failover:(tcp://host:port?TCP_OPTIONS)?FAILOVER_OPTIONS 정상적으로 진행하십시오. 이것은 클라이언트가 멈춘 것처럼 보이지만 계속하기 전에 브로커가 사용 가능할 때까지 기다리는 것입니다. 이 구성은 연결이 끊어진 경우 다시 연결을 시도합니다 (예 : 브로커를 다시 시작한 경우).

대부분의 사용자는 페일 오버 전송을 사용하여 N 그룹에서 브로커 중 하나에 연결할 수 있지만 내부 TCP 전송을 하나만 사용하면 완전히 사용할 수 있습니다. 단일 TCP 전송에 연결하지 못하면 주기적으로 다시 연결을 시도합니다.