多个地市连接MQ,如果较长时间没有消息发送,ActiveMQ的消费端会自动断开连接(topic端)

redapplepj 发布于 2013/12/10 16:32
阅读 5K+
收藏 0

使用jconsole查看Activemq情况,如下图:

图1.初始链接,一切正常(三个地市建立了3个topic链接)。

图2为发送过程中,出现链接断开并没有重连。在false中可以看到topic_4406已经断开了。  
请教一下各位,从上面两张图能看出什么问题吗?有没有解决办法?
 

我是使用的failover方式,
配置如下:
<bean id="jmsConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="failover:(tcp://${activemq.ip}:${activemq.port}?wireFormat.maxInactivityDuration=0)?initialReconnectDelay=100&amp;maxReconnectAttempts=0"></property>
</bean>
</property>
<property name="maxConnections" value="1"></property>
<property name="maximumActive" value="200"></property>

</bean>

<bean id="suspinfoTopicConsumer" class="com.sunshine.monitor.system.activemq.service.receiver.SuspinfoTopicConsumer" />
      
    <!-- Message Listener for  -->
    <bean id="suspinfoTopicListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg ref="suspinfoTopicConsumer" />
<!--  may be other method -->
<property name="defaultListenerMethod" value="receiveSuspinfo" />
<!-- <property name="defaultListenerMethod" value="onMessage" />-->
<property name="messageConverter" ref="defaultMessageConverter" />
</bean>
  
 <bean id="suspinfoTopicListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer" init-method="start" destroy-method="stop">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="suspinfoTopicDestination" />
<property name="messageListener" ref="suspinfoTopicListener" />
<property name="sessionAcknowledgeMode" value="1"></property>  
<property name="subscriptionDurable" value="true"></property>   <!-- 设置监听是否是持久 -->
<property name="pubSubDomain" value="true"></property>    <!-- 区别它采用的模式为false:p2p  为true:订阅 --> 
<property name="clientId" value="topic_${activemq.city}_Suspinfo"></property>   <!-- 持久订阅者的标志ID,必须唯一 -->
<property name="durableSubscriptionName" value="topic_${activemq.city}_Suspinfo"></property>   <!-- 持久订阅者的名称 -->
<property name="receiveTimeout" value="10000" />
</bean>

如果没有消息发送,隔了一段时间后再发送,就有链接会自动退出来。也不会再自动重连。 
就像上面的图2所示。topic_4406那个断开了

 

加载中
0
kimmking
kimmking

去掉 wireFormat.maxInactivityDuration=0

这个选项导致 broker与client的心跳机制被关闭,在某些操作系统上,tcp连接空闲超过一定时间,会被强制断开。

攻略组
攻略组
你说的这个东西在哪?????
返回顶部
顶部