2013-12-15 2 views
0

서버 프로세스에 연결하는 스윙 GUI 클라이언트가 있습니다.JMS 손실 감지 방법 주제 연결

클라이언트는 Camel 라우트에 정의 된 '종단점에서 jms:queue'을 사용하고 ActiveMQ를 기본 JMS 브로커로 사용하여 서버에서 서비스를 호출합니다.

그러나 클라이언트는 서버가 클라이언트에 다시 메시지를 브로드 캐스트하기위한 Camel jms:topic 끝점도 제공합니다.

불행히도 주제 연결이 어떻게 든 사라지고 클라이언트가 서버의 서비스를 계속 '호출'할 수 있지만 서버는 클라이언트의 주제 끝점으로 메시지를 보낼 수 없습니다.

<camel:route> 
     <camel:from uri="jms:topic:inUseQueue"/> 
     <camel:to uri="bean:inUseInterfaceImpl"/> 
    </camel:route> 

그리고 다음과 같이 서버 측 생산자가 정의되어 다음과 같이

낙타 엔드 포인트의 클라이언트 측 스프링의 정의는

<bean id="inUseManagerImpl" class="org.apache.camel.spring.remoting.CamelProxyFactoryBean"> 
    <property name="serviceUrl" value="jms:topic:inUseQueue"/> 
    <property name="serviceInterface" value="uniworks.core.inuse.InUseInterface"/> 
</bean> 

사람은 방법을 알고 있나요 그 우리는 어떻게 든 클라이언트 측에서이 주제 연결의 손실을 감지 할 수 있습니까?

+0

내가이 질문을 한 이래로이 문제는 다시 떠오르지 않았습니다. 그래서 이것은 일시적인 문제 일 뿐이라고 생각합니다. – DuncanKinnear

답변

0

쉬운 해결 방법은 isSingleton() 방법을 CamelProxyFactoryBean으로 대체하는 것입니다. false를 반환하고 캐스팅하지 않고 모든 호출에서 생성자 bean을 만든다. 또는 CamelProxyFactoryBean의 범위를 프로토 타입으로 정의 할 수도 있습니다.

또한 연결 풀링을 지원하는 ActiveMQ 낙타 구성 요소를 사용해 볼 수 있습니다.

0

나는 이것이 8 개월 된 질문이라는 것을 알고 있지만, 대체이게 뭐야.

클라이언트가 단절된 것으로 추정 할 수있는 "등재"메시지를 얻지 못하면 서버가 "분주 한"메시지를 분당 1 분씩 보내도록하는 것이 좋습니다.

+0

예, 이렇게 할 수 있습니다. 그러나 우리는 클라이언트가 여전히 '로그인되어있는'상태에서 서버를 내려서 다시 시작할 수 있도록 시스템을 설계했습니다. 따라서 서버가 '재부팅'(몇 분)되는 동안 클라이언트는 JMS 서버 측에 있다고 생각할 것입니다. 파이프 '가 손실되었습니다. 원래의 문제는 내가이 질문을 한 후에 다시 나타나지 않았으므로 이것이 일종의 일시적인 문제라고 생각합니다. – DuncanKinnear