2010-07-26 2 views
3

저는 현재 C#에서 작업 중이며 JMS 연결 상태 (연결 여부에 관계없이)를 확인해야합니다. 성공적으로 연결하고 연결을 끊을 수 있다고 확신합니다. UI의 연결 상태를 표시해야합니다.IBM JMS 연결

연결 상태를 나타내는 JMS 연결의 속성이 있습니까? 아니면 연결 상태를 확인하는 데 사용할 수있는 다른 방법이 있습니까?

도움 주셔서 감사합니다. :)


현재 예외 목록을 수신하기 위해 ExceptionListener를 사용하고 있으며 예외가 발생하면 플래그가 false로 설정됩니다. 그리고 연결 중일 때 연결을 끊을 때 플래그를 true로 설정하고 플래그를 false로 설정합니다.

이 플래그는 내 UI에서 연결이되었는지 여부를 감지하는 데 사용됩니다.

그러나 IBM의 연결 속성을 사용하면 연결 상태를 훨씬 더 나은 해결책으로 나타낼 수 있다고 생각했습니다. SonicMQ의 경우 연결이 활성인지 비활성인지를 나타내는 .getConnectedState()가 있습니다. IBM이 SonicMQ와 비슷한 것을 가지고 있는지 궁금합니다.

+0

WMQ JMS 구현은 JMS 1.1과 호환되며 알고있는 한 getConnectionState()와 같은 공급자 별 메서드가 포함되어 있지 않습니다. –

+0

oic. 그럼 내가 어떤 disconnections ..thanks 확인하기 위해 예외 수신기를 사용해야 같아요 :) – iEmo

답변

1

Connection.setExceptionListener() 메서드를 사용하면 연결에서 발견 된 예외를 비동기 적으로 알릴 수 있습니다. 문제가 발견되면 onException() 메서드가 호출됩니다.

QMgr이 관리자에 의해 종료 될 때 연결이 통보되고 순서대로 닫히도록 팩토리 및 대상에 FAILIFQUIESCE 속성을 설정해야합니다.

WMQ v7에서는 전송에서 세션 재 연결을 활성화 할 수 있습니다. 이 경우, 응용 프로그램은 연결이 인터럽트되었음을 ​​인식하지 못할 수도 있지만 계속 연결되어있는 것으로 간주 할 수 있습니다.

대부분의 경우 예외는 응용 프로그램의 API 호출에 의해 결정됩니다. 따라서 연결이 끊어지면 실시간으로 알지 못하고 API 호출이 언제 발생하는지 알 수 있습니다. 응용 프로그램이 오랜 시간 동안 유휴 상태에 있고 연결 상태의 실시간 표시를 원할 경우 해당 항목에 대한 자세한 내용은 "How to find out if JMS Connection is there?"을 참조하십시오.

WMQ v7에는 클라이언트를 자동으로 다시 연결하는 옵션이 있습니다. 이 작업을 수행하려면 클라이언트와 서버 모두에서 v7을 사용해야합니다. v6는 2011 년 9 월까지 수명이 다되었으므로 v7에서이 앱을 개발하는 것이 가장 좋습니다. v7 클라이언트는 SupportPac MQC7으로 다운로드 할 수 있습니다. JMS client reconnect이 활성화되면 응용 프로그램은 연결이 다시 작성되는 동안 API 호출에 대한 응답이 지연되는 것을 제외하고는 연결 활동을 인식하지 못할 수 있습니다. 지연 시간은 관리자 및 연결 팩토리에서 설정 한 채널 조정에 따라 다릅니다.