2014-10-15 4 views
0

MQ 버전 7.5.0.4MQ JMS 재 연결 - 예외 리스너

연결이 끊어졌을 때 알림을받을 수있는 방법이 있습니까? 내가 할 수있는 일은 타임 아웃에 도달했을 때만 오류가 발생합니다. (JMSWMQ1107: A problem with this connection has occurred.)

 mqcf.setConnectionNameList(host); // "host1(1414),host2(1414)"; 
     mqcf.setClientReconnectOptions(WMQConstants.WMQ_CLIENT_RECONNECT); 
     mqcf.setClientReconnectTimeout(100); // seconds 

     ExceptionListener exceptionListener = new ExceptionListener(){ 
      @Override 
      public void onException(JMSException e) { 
       System.out.println(e.getErrorCode() + " " + e.getMessage()); 
      } 
     }; 


     // need to reconnect on exception..! 
     connection.setExceptionListener(exceptionListener); 

답변

2

이벤트에 대한 예외 리스너 (심지어 재 연결)는 JMS 사양의 범위를 벗어납니다. 엄격한 정의는 연결이 끊어진 경우에만 해고되어야하며 올바른 작업 과정은 연결을 다시 만드는 것입니다. (MQ가 포함 된 다양한 공급 업체가 확장 기능을 제공하므로이 요구 사항을 항상 높여야합니다!)

여기에있는 JavaSE 환경에서는 자동 연결을 설정할 수 있습니다. 지원되지 않는 관리 환경에서 실제로 연결이 끊어진 것을 청취하고 응용 프로그램이 createConnection()을 재 시도해야합니다. connectionNameList는 실행중인 QM을 찾기 위해 'walked'됩니다.

+0

JMS 부분에 동의했습니다. Akka/Scala를 사용 중입니다. 낙타 커넥터가 있지만 ... 관리 연결의 경우 https://www.ibm.com/developerworks/community/blogs/messaging/entry/ccdts_connection_namelists_load_balancers_and_code_stubs?lang=ko http://www.ibm.com/developerworks/kr/websphere/library/techarticles/1303_broadhurst/1303_broadhurst-pdf.pdf – oluies

+0

좋은 링크 - 공식적인 재 연결 지원은 http://www-01.ibm.com/입니다. support/docview.wss? uid = swg21508357 – Calanais

1

자세한 내용을 보려면 연결된 예외를 사용하십시오. 필자의 테스트에서 MQRC 2161 이유 코드는 재접속 옵션없이 큐 관리자를 종료했습니다.

코드 :

  @Override 
      public void onException(JMSException e) { 
       System.out.println(e);//e.getErrorCode() + " " + e.getMessage()); 
       if(e.getLinkedException() != null) 
        System.out.println(e.getLinkedException()); 
      } 

예외 정보.

com.ibm.msg.client.jms.DetailedIllegalStateException: JMSWMQ1107: A problem with this connection has occurred. 
An error has occurred with the WebSphere MQ JMS connection. 
Use the linked exception to determine the cause of this error. 
com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2161' ('MQRC_Q_MGR_QUIESCING'). 
+0

Shashi, 그렇습니다.하지만 setClientReconnectTimeout이 노출 된 후에 만 ​​발생합니다. 나는 클라이언트가 reconnnect하려고한다는 것을 알기 위해 * API * listner를 입대시킬 수 있다고 생각하지 않는다. – oluies