2013-12-15 5 views
0

У нас есть клиенты графического интерфейса Swing, которые подключаются к серверному процессу.Как обнаружить потерю JMS Тема подключения

Услуги клиентов на сервере, используя jms:queue «от» конечных точек, определенных на маршрутах Верблюда, и используя ActiveMQ в качестве базового брокера JMS.

Однако клиент также предлагает конечную точку Camel jms:topic, чтобы сервер мог передавать сообщения обратно клиенту.

К сожалению, похоже, что соединение с темой каким-то образом теряется, и хотя клиент все еще может «вызывать» службы на сервере, сервер не может отправлять какие-либо сообщения в конечную точку вашего клиента.

Определение пружинной стороны клиента конечной точки Camel выглядит следующим образом:

<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 и дайте весне создать компонент-производитель при каждом вызове, а не кешировать его. Или вы также можете определить область действия CamelProxyFactoryBean.

Также вы можете попробовать с помощью компонента camel ActiveMQ, который поддерживает объединение пулов.

0

Я понимаю, что это вопрос на 8 месяцев, но эй, какого черта.

было бы целесообразно, чтобы сервер передавал сообщение «isalive» раз в минуту, таким образом, если клиент не получает никаких «отвратительных» сообщений, он может предположить, что он был отключен.

+0

Да, это можно было бы сделать. Тем не менее, мы разработали систему, чтобы сервер можно было снять и перезапустить, пока клиенты все еще «вошли в систему», поэтому, пока сервер «перезагружается» (несколько минут), клиент будет думать, что это сторона JMS, труба "была потеряна. Первоначальная проблема не возникла с тех пор, как я задал этот вопрос, поэтому считаю, что это была какая-то временная проблема. – DuncanKinnear

Смежные вопросы