0

我们有连接到服务器进程的摆动 GUI 客户端。

客户端使用 Camel 路由中定义的“from”端点“调用”服务器上的服务jms:queue,并使用 ActiveMQ 作为底层 JMS 代理。

但是,客户端还为服务器提供了一个 Cameljms:topic端点,以将消息广播回客户端。

不幸的是,主题连接似乎以某种方式丢失了,尽管客户端仍然可以“调用”服务器上的服务,但服务器无法向客户端的主题端点发送任何消息。

Camel端点的客户端spring定义如下:

    <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>

有谁知道我们可以以某种方式检测客户端上此主题连接丢失的方法?

4

2 回答 2

0

我意识到这是一个 8 个月大的问题,但嘿,到底是什么。

让服务器每分钟广播一次“isalive”消息是否有意义,这样如果客户端没有收到任何“isalive”消息,它可以假定它已断开连接。

于 2014-08-05T15:53:54.070 回答
0

isSingleton()一个简单的解决方法是覆盖CamelProxyFactoryBean. 返回 false 并让 spring 在每次调用时创建生产者 bean,而不是缓存它。或者你也可以定义CamelProxyFactoryBean原型的范围。

您也可以尝试使用支持连接池的ActiveMQ骆驼组件。

于 2013-12-16T06:54:58.843 回答