0

スタンドアロン環境で Spring3.1 を使用しています。

リモート jboss4 サーバーでリモート トピックをリッスンする DMLC(DefaultMessageListenerContainer) を構成しました。

200000 件のメッセージを高率で受け取った後、ひどい状況に陥っています (少ない可能性があります)

リスナーはエラー/警告なしでメッセージの受信を停止します。

しかし一方で、アプリケーションはまだ実行中です。(プロセスを強制終了する必要があり、通常の ./stop スクリプトが役に立たない場合に他に何が起こるか)

何を間違って設定しましたか?

これは私の構成です:

<bean id="TgwListenerDLMC"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="topicConnFactory" />
    <property name="pubSubDomain" value="true" />
    <property name="destinationResolver" ref="destinationResolver" />
    <property name="concurrentConsumers" value="1" />
    <property name="destinationName" value="/topic/TopicRealTime" />
    <property name="messageListener" ref="TgwMDB" />
    <property name="sessionAcknowledgeModeName" value="AUTO_ACKNOWLEDGE" />
    <property name="recoveryInterval" value="5000" />

</bean>

<bean id="topicConnFactory"
        class="org.springframework.jms.connection.CachingConnectionFactory">
        <property name="targetConnectionFactory" ref="jndiTopicConnFactory" />
        <property name="reconnectOnException" value="true" />
        <!-- Number of sessions that will be cached -->
        <property name="sessionCacheSize" value="20" />
    </bean>


    <bean id="jndiTopicConnFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jndiTemplate" />
    <!-- JNDI name of connection factory as defined by provider -->
    <property name="jndiName" value="ConnectionFactory" />
</bean>

<bean id="destinationResolver"
    class="org.springframework.jms.support.destination.JndiDestinationResolver">
    <property name="jndiTemplate" ref="jndiTemplate" />
    <property name="cache" value="true" />
    <!--
        do not create a dynamic destination if the destination name is not
        found in JNDI
    -->
    <property name="fallbackToDynamicDestination" value="false" />
</bean>


<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
    <property name="environment">
        <props>
            <prop key="java.naming.provider.url">${java.naming.provider.url}</prop>
            <prop key="java.naming.factory.initial">${java.naming.factory.initial}</prop>
            <prop key="java.naming.factory.url.pkgs">${java.naming.factory.url.pkgs}</prop>
        </props>
    </property>
</bean>

jstack を使用した ThreadDump の出力は次のとおりです。

[Loaded sun.reflect.GeneratedConstructorAccessor17 from __JVM_DefineClass__]
2012-08-29 14:45:37,771 org.springframework.jms.connection.CachingConnectionFactory [WARN] Encountered a JMSException - resetting the underlying JMS Connection

javax.jms.JMSException: Failure on underlying remoting connection
        at org.jboss.jms.client.remoting.ConsolidatedRemotingConnectionListener.handleConnectionException(ConsolidatedRemotingConnectionListener.java:102)
        at org.jboss.remoting.ConnectionValidator$1.run(ConnectionValidator.java:608)
[Loaded sun.reflect.GeneratedSerializationConstructorAccessor88 from __JVM_DefineClass__]
[Loaded sun.reflect.GeneratedSerializationConstructorAccessor89 from __JVM_DefineClass__]
[Loaded sun.reflect.GeneratedSerializationConstructorAccessor90 from __JVM_DefineClass__]
[Loaded sun.reflect.GeneratedSerializationConstructorAccessor91 from __JVM_DefineClass__]
[Loaded sun.reflect.GeneratedSerializationConstructorAccessor92 from __JVM_DefineClass__]
[Loaded sun.reflect.GeneratedSerializationConstructorAccessor93 from __JVM_DefineClass__]
[Loaded sun.reflect.GeneratedSerializationConstructorAccessor94 from __JVM_DefineClass__]

ありがとう、レイ。

4

0 に答える 0